【发布时间】:2012-08-08 14:47:35
【问题描述】:
我最初的情况与this question中的情况类似。来自强大的 Git 背景,我想强制推送我的私有分支的清理版本(以相同的名称),我已经压缩/折叠了一些提交(使用histedit extension)。我再次做的和this answer类似,但我做的顺序不同:
$ hg clone -b private_branch <url>
$ hg histedit -r <some_rev> # Fold some commits
$ hg push -f # This creates a second branch head on the server
$ hg update -r <rev_of_original_branch_head>
$ hg commit --close-branch -m 'Closing this branch in favor of a cleaned-up version'
$ hg push
我不明白的是,如果我现在设置一个新的工作树,我会得到
$ hg clone -b private_branch <url>
$ hg log -l 1
changeset: <rev>:<sha1>
branch: private_branch
tag: tip
parent: <tip_rev_of_branch_before_folding>:<sha1>
user: <name> <email>
date: Wed Aug 08 11:48:25 2012 +0200
summary: Closing this branch in favor of a cleaned-up version
为什么tip 指向关闭的分支? hg heads 只是按预期显示我的强制推头。但是,hg heads -t 显示了private_branch 的两个头像。我还验证了我的关闭提交确实是关闭提交,hg log --debug 显示 extra: close=1。
编辑:问题是,如果我在新克隆上进行提交,我会得到
$ hg ci -m "test"
created new head
reopening closed branch head <rev>
但我不想重新打开关闭的分支头,我想在打开的分支头之上提交。
我该如何解决这个问题,最好不用no-op merge?
【问题讨论】:
标签: mercurial