在Mercurial中重命名已提交的分支

时间:2012-05-08 17:37:33

标签: mercurial branch

Mercurial - 在创建并提交分支后(在本地和中央仓库中)完成分支重命名所涉及的步骤是什么。

例如,我创建了一个名为Zelda的分支,然后提交并推送到中央存储库。我现在想要将分支的名称更改为Triforce。

是否有延伸可以实现此目的?除了任何扩展解决方案之外,还有什么可以解决的问题?

2 个答案:

答案 0 :(得分:10)

简短的回答是

答案很长,Mercurial分支是附加到变更集的名称。如果您将多个变更集提交到分支 zelda 并放弃(即,推送到中央仓库),则无法重新命名该分支而无需重新创建这些变更集,这意味着重写历史记录。

即使您在repo和central repo中删除了这些更改集,然后将它们重新创建为属于分支 triforce ,然后再次推送“重命名”分支,所有协作者最终将拥有两个变更集副本,一个在分支 zelda 上设置,另一个在分支 triforce 上。

是的,你应该做的是在https://stackoverflow.com/a/7245187/67988中描述的。从那里引用,调整到您的分支名称,即 zelda 是要关闭的旧分支, triforce 是要创建的新分支。

hg update zelda
hg commit --close-branch -m "mgmt: Close branch zelda"
hg branch triforce
hg commit -m "mgmt: Create branch triforce"
hg push --new-branch

P.S。如果还没有其他人从中央仓库撤出,您可以尝试从那里剥离 zelda 。或者,如果您可以访问所有其他开发人员的PC(假设受控环境),并且真的想要走一条非常危险的道路,那么您可以从所有回购中删除此分支。这绝对不是一种好的做法,只能作为最后的手段。

答案 1 :(得分:1)

mutable-branches extension可以给出重命名分支的错觉。