Mercurial,“用书签进行分支”
我阅读了此文档:Mercurial 分支指南< /a>,特别是标题为 使用书签进行分支。
它说:
现在,您在当前变更集中的两个分支有了两个书签(本质上是一个标签)。
要切换到这些分支之一,您可以使用
hg update feature
更新到该分支的提示变更集,并将自己标记为在该分支上工作。当您提交时,它会将书签移动到新创建的变更集。
我尝试了这个,但它最终同时移动了两个书签。
该指南是错误的、过时的还是我做错了什么?请注意,我知道在单独的分支上添加书签只会移动与我当前正在处理的分支相关的书签,但是该指南(很多人说这是对此的明确指南)特别说明了上面的文本,这表明它应该通过“告诉”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 <[email protected]> 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 <[email protected]> date: Tue Nov 30 23:06:45 2010 +0100 summary: feature 1 changeset: 0:c56ceb49ee20 user: Lasse V. Karlsen <[email protected]> date: Tue Nov 30 23:06:16 2010 +0100 summary: initial
I read this document: A Guide to Branching with Mercurial, specifically the section titled Branching with Bookmarks.
It says:
Now you’ve got two bookmarks (essentially a tag) for your two branches at the current changeset.
To switch to one of these branches you can use
hg update feature
to update to the tip changeset of that branch and mark yourself as working on that branch. When you commit, it will move the bookmark to the newly created changeset.
I tried this, but it ended up moving both bookmarks at the same time.
Is that guide wrong, outdated, or did I do something wrong? Note that I know that having bookmarks on separate branches only moves the bookmark related to the branch I'm currently working on, but that guide (which a lot of people says is the definite guide to this) specifically says the above text, which indicates that it should've worked by "telling" Mercurial which bookmark (branch) I'm working on.
Testing shows otherwise though.
Any ideas?
Example:
> 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 <[email protected]> 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 <[email protected]> date: Tue Nov 30 23:06:45 2010 +0100 summary: feature 1 changeset: 0:c56ceb49ee20 user: Lasse V. Karlsen <[email protected]> date: Tue Nov 30 23:06:16 2010 +0100 summary: initial
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果我没猜错的话,您希望只需要您已更新的书签才能在下一次提交中移动。为此,书签扩展具有
track.current
选项。来自 BookmarksExtension:
在您的示例中,这会将 main 书签保留在修订版 0 处。
如果
track.current启用
选项后,当前活动书签在hg bookmarks
的输出中用星号注释。更新:自 Mercurial 1.8 起,默认行为是仅移动当前书签,即不再需要上述选项[1]。
If I got you right, you want only the bookmark you've updated to move on the next commit. For this purpose the bookmarks extensions has the
track.current
option.From BookmarksExtension:
In your example, this would keep the main bookmark at revision 0.
If the
track.current
option is enabled, the currently active bookmark is annotated with an asterisk in the output ofhg bookmarks
.UPDATE: Since Mercurial 1.8 the default behavior is to only move the current bookmark, i.e. the above mentioned option is not needed anymore [1].
如果您阅读了 BookmarksExtension 的说明,它会显示:
和:
就您而言,当您创建两个书签时,存储库中只有一个头。如果您使用如下所示的序列,它应该按您的预期工作:
If you read the description of the BookmarksExtension, it says:
and:
In your case, you only had one head in the repository at the time you created both bookmarks. If you use a sequence like the following, it should work as you expect: