小编典典

如何正确关闭 Mercurial 中的功能分支?

all

我已经完成了一个功能分支的工作feature-x。我想将结果合并回default分支并关闭feature-x,以便在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
44hg 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不再在输出中显示已关闭分支的头部。

是否可以关闭合并的分支而不留下一个头?是否有更正确的方法来关闭功能分支?


阅读 117

收藏
2022-05-29

共1个答案

小编典典

一种方法是让合并的功能分支保持打开(并且不活动):

$ 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,但是应该提前知道哪个提交将是最后一个。

更新 :从 Mercurial 1.5 开始,您可以随时关闭分支,这样它就不会出现在两者hg brancheshg heads。唯一可能让您烦恼的是,从技术上讲,修订图仍然会有一个没有子项的修订。

更新 2 :自从 Mercurial 1.8 书签 已成为 Mercurial 的核心功能。书签比命名分支更便于分支。另请参阅此问题:

2022-05-29