如何正确关闭Mercurial中的功能分支?
我已完成一项功能分支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
)是封闭的,但有一个新的头,关闭分支机构变更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版本开始,Mercurial不再显示hg heads
输出中封闭分支的hg 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
将最后一次实际提交到特性分支与这个额外提交结合起来,但是应该事先知道哪个提交是最后一次提交。
更新 :由于Mercurial 1.5可以随时关闭分支,因此它不会再出现在hg branches
和hg heads
。 唯一可能会让你烦恼的是,从技术上来说,修订图还是会有一个没有童装的版本。
更新2 :由于Mercurial 1.8书签已成为Mercurial的核心功能。 书签比分支命名更便于分支。 另请参阅此问题:
对于忘记关闭的分支,有两种情况
案例1:分支未被合并为默认值
在这种情况下,我更新到分支并使用--close-branch做另一个提交,不幸的是,这会选择分支成为新提示,因此在将其推送到其他克隆之前,我确保真正的提示接收到更多更改并且其他不要对这个奇怪的提示感到困惑。
hg up myBranch
hg commit --close-branch
案例2:分支被合并为默认
这种情况与情况1没有太大区别,可以通过重复情况1和两个附加情况的步骤来解决。
在这种情况下,我更新到分支变更集,使用--close-branch做另一个提交,并将成为提示的新变更集合并为默认值。 最后的操作会创建一个新的提示,它位于默认分支 - HOORAY!
hg up myBranch
hg commit --close-branch
hg up default
hg merge myBranch
希望这有助于未来的读者。
编辑哎呦,太迟了......我知道阅读你的评论,指出你想保留这个feature-x变更集,所以这里的克隆方法是行不通的。
我仍然会在这里回答这个问题可能会帮助其他人。
如果你想完全摆脱“功能X”,因为,例如,它不起作用,你可以克隆。 这是文章中解释的方法之一,它确实有用,它专门讨论头部问题。
据我了解,你有这个,并希望彻底摆脱“feature-x”头:
@ changeset: 7:00a7f69c8335
| tag: tip
| | parent: 4:31b6f976956b
| | parent: 2:0a834fa43688
| | summary: merge
| |
| | o changeset: 5:013a3e954cfd
| |/ summary: Closed branch feature-x
| |
| o changeset: 4:31b6f976956b
| | summary: Changeset2
| |
| o changeset: 3:5cb34be9e777
| | parent: 1:1cc843e7f4b5
| | summary: Changeset 1
| |
o | changeset: 2:0a834fa43688
|/ summary: Changeset C
|
o changeset: 1:1cc843e7f4b5
| summary: Changeset B
|
o changeset: 0:a9afb25eaede
summary: Changeset A
所以你这样做:
hg clone . ../cleanedrepo --rev 7
你会得到以下结果,你会发现feature-x确实不见了:
@ changeset: 5:00a7f69c8335
| tag: tip
| | parent: 4:31b6f976956b
| | parent: 2:0a834fa43688
| | summary: merge
| |
| o changeset: 4:31b6f976956b
| | summary: Changeset2
| |
| o changeset: 3:5cb34be9e777
| | parent: 1:1cc843e7f4b5
| | summary: Changeset 1
| |
o | changeset: 2:0a834fa43688
|/ summary: Changeset C
|
o changeset: 1:1cc843e7f4b5
| summary: Changeset B
|
o changeset: 0:a9afb25eaede
summary: Changeset A
我可能误解了你想要的内容,但请不要模糊,我花时间复制你的用例:)
链接地址: http://www.djcxy.com/p/6405.html