Mercurial,“用书签分支”

时间:2010-11-30 22:14:04

标签: mercurial branch bookmarks

我阅读了此文档:A Guide to Branching with Mercurial,特别是标题为Branching with Bookmarks的部分。

它说:

  

现在,您在当前的变更集处有两个分支(基本上是一个标记)。

     

要切换到其中一个分支,您可以使用hg update feature更新到该分支的tip更改集,并将自己标记为在该分支上工作。提交时,它会将书签移动到新创建的变更集。

我试过这个,但它最终同时移动了两个书签。

该指南是错误的,过时的,还是我做错了什么?请注意,我知道在单独的分支上设置书签只会移动与我当前正在处理的分支相关的书签,但该指南(很多人说这是明确的指南)具体说明了上述文本,表明它应该通过“告诉”Mercurial我正在处理哪个书签(分支)来工作。

虽然测试显示不是。

有什么想法吗?

示例:

> hg init
> echo 1 >test.txt
> hg commit -m "initial" --addremove
adding test.txt

> hg bookmark main
> hg bookmark feature
> hg log
changeset:   0:c56ceb49ee20
tag:         feature
tag:         main
tag:         tip
user:        Lasse V. Karlsen <lasse@vkarlsen.no>
date:        Tue Nov 30 23:06:16 2010 +0100
summary:     initial

> hg update feature
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

> echo 2 >test2.txt
> hg commit -m "feature 1" --addremove
adding test2.txt

> hg log
changeset:   1:9f2f5869b57b
tag:         feature                             <---- both were moved
tag:         main                                <----
tag:         tip
user:        Lasse V. Karlsen <lasse@vkarlsen.no>
date:        Tue Nov 30 23:06:45 2010 +0100
summary:     feature 1

changeset:   0:c56ceb49ee20
user:        Lasse V. Karlsen <lasse@vkarlsen.no>
date:        Tue Nov 30 23:06:16 2010 +0100
summary:     initial

2 个答案:

答案 0 :(得分:16)

如果我找到了你,你只想你已经更新的书签继续下一次提交。为此,书签扩展名具有track.current选项。

来自BookmarksExtension

  

默认情况下,当多个书签指向同一个变更集时,它们将一起向前移动。通过向.hgrc

添加以下配置选项,可以获得更类似Git的体验
[bookmarks]
track.current = True

在您的示例中,这会将书签保留在修订版0。

如果启用了track.current选项,则当前活动的书签会在hg bookmarks的输出中使用星号进行注释。

UPDATE:由于Mercurial 1.8的默认行为是仅移动当前书签,即不再需要上述选项[1]

答案 1 :(得分:3)

如果您阅读BookmarksExtension的说明,则说:

  

书签是对新提交时自动更新的提交的引用。

  

由于书签在提交到他们指向的变更集时会自动更新,因此它们对于跟踪不同的头部特别有用。

在您的情况下,您在创建两个书签时只在存储库中有一个头。如果您使用如下所示的序列,它应该按预期工作:

hg init foo
# edit, edit, edit
hg commit -A -m "root"
hg bookmark main
# edit, edit, edit ...
hg commit -m "main 1"
hg update 0
# edit, edit edit
hg bookmark feature
hg commit -m "feature 1"