Mercurial,"用书签分支"

ang*_*son 8 mercurial branch bookmarks

我阅读了本文档:Mercurial分支指南,特别是标题为使用书签分支的部分.

它说:

现在,您在当前变更集中有两个分支(基本上是标记).

要切换到其中一个分支,您可以使用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

Obe*_*nne 16

如果我找到了你,你希望你更新的书签在下次提交时移动.为此,书签扩展可以track.current选择.

来自BookmarksExtension:

默认情况下,当多个书签指向同一个变更集时,它们将一起向前移动.通过向.hgrc添加以下配置选项,可以获得更类似Git的体验

[bookmarks]
track.current = True
Run Code Online (Sandbox Code Playgroud)

在您的示例中,这将使书签保持在修订版0.

如果track.current启用该选项,则当前活动的书签在输出中注明带星号hg bookmarks.

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

  • +1给出了有用的答案,但它引出了一个明显的问题:何时track.current*不合适?我无法想象我有多个书签的情况,我希望他们*全部*在提交时继续前进. (3认同)