我已经完成了一个功能分支的工作feature-x。我想将结果合并回default分支并关闭feature-x,以便在hg branches.
feature-x
default
hg branches
我想出了以下场景,但它有一些问题:
$ hg up default $ hg merge feature-x $ hg ci -m merge $ hg up feature-x $ hg ci -m 'Closed branch feature-x' --close-branch
所以feature-x分支 (changests 40- 41) 被关闭,但是有 一个新的 head ,关闭分支 changeset 44,hg heads每次都会列出:
40
41
44
hg heads
$ hg log ... o 44 Closed branch feature-x | | @ 43 merge |/| | o 42 Changeset C | | o | 41 Changeset 2 | | o | 40 Changeset 1 |/ o 39 Changeset B | o 38 Changeset A |
更新 :看来,自 1.5 版以来,Mercurialhg heads不再在输出中显示已关闭分支的头部。
是否可以关闭合并的分支而不留下一个头?是否有更正确的方法来关闭功能分支?
一种方法是让合并的功能分支保持打开(并且不活动):
$ hg up default $ hg merge feature-x $ hg ci -m merge $ hg heads (1 head) $ hg branches default 43:... feature-x 41:... (2 branches) $ hg branches -a default 43:... (1 branch)
另一种方法是在合并之前使用额外的提交关闭功能分支:
$ hg up feature-x $ hg ci -m 'Closed branch feature-x' --close-branch $ hg up default $ hg merge feature-x $ hg ci -m merge $ hg heads (1 head) $ hg branches default 43:... (1 branch)
第一个更简单,但它留下了一个开放的分支。第二个没有留下开放的头/分支,但它需要一个额外的辅助提交。可以使用 将最后一次实际提交到功能分支与这个额外提交结合起来--close-branch,但是应该提前知道哪个提交将是最后一个。
--close-branch
更新 :从 Mercurial 1.5 开始,您可以随时关闭分支,这样它就不会出现在两者hg branches中hg heads。唯一可能让您烦恼的是,从技术上讲,修订图仍然会有一个没有子项的修订。
更新 2 :自从 Mercurial 1.8 书签 已成为 Mercurial 的核心功能。书签比命名分支更便于分支。另请参阅此问题: