我阅读了此文档: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
答案 0 :(得分:16)
如果我找到了你,你只想你已经更新的书签继续下一次提交。为此,书签扩展名具有track.current
选项。
默认情况下,当多个书签指向同一个变更集时,它们将一起向前移动。通过向.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"