Mercurial:如何拉取和更新到特定标签

时间:2016-12-21 15:09:12

标签: version-control mercurial

我想从远程存储库中提取最新的变更集,同时将我的本地存储库更新为某个tag。类似于hg fetchhg pull -u的内容,但标签更新。在两行代码中,这是:

hg pull
hg update mytag

hg pull --help显示以下内容,但不幸的是,他们都没有为标记工作:

options:

 -u --update                update to new branch head if changesets were pulled
 -f --force                 run even when remote repository is unrelated
 -r --rev REV [+]           a remote changeset intended to be added
 -B --bookmark BOOKMARK [+] bookmark to pull
 -b --branch BRANCH [+]     a specific branch you would like to pull
 -e --ssh CMD               specify ssh command to use
  --remotecmd CMD           specify hg command to run on the remote side
  --insecure                do not verify server certificate (ignoring web.cacerts config)

我尝试了什么:

hg pull -r mytag            only pulls the latest changesets, but no update
hg pull -u                  pulls and updates to tip, but no tag allowed
hg pull -b mytag            abort: unknown branch
hg pull -B mytag            abort: remote bookmark mytag not found

是否可以在一行中完成?

2 个答案:

答案 0 :(得分:3)

对于香草Mercurial,没有任何指令可以拉动&更新到某个标签,修订版或其他任何内容。

hg pull
hg update mytag

hg pull
hg update -r REVNUMBER 

这项工作会很好,我不会用别名和函数使它复杂化,这样可以避免我只做一个额外的命令。

答案 1 :(得分:1)

如果您正在使用命令行,这将对您有所帮助。

首先发挥作用。

function pullandup(){ hg pull; hg up $1; }

$1将被第一个命令行参数替换。因此,此函数首先执行hg pull,而不是将命令行参数和updates工作目录添加到指定的版本/书签/标记。

您可以创建此别名并调用该函数。

alias pull_up='function pullandup(){ hg pull; hg up $1; };pullandup'

运行

pull_up mytag

将首先提取所有最新的变更集,并将您的工作目录更新为mytag

与其他终端合作时可能存在差异,这个是BASH。