8

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

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

有没有一个扩展可以做到这一点?除了任何扩展解决方案之外,还有什么长的路要走?

4

2 回答 2

10

简短的回答是否定的。

长答案是,Mercurial 分支是附加到变更集的名称。如果您有多个变更集提交到分支zelda并被放弃(即,推送到中央仓库),那么您无法在不重新创建这些变更集的情况下重命名该分支,这意味着重写历史。

即使您在 repo 和中央 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

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

于 2012-05-09T01:01:47.050 回答
1

mutable-branches 扩展可以给人一种重命名分支的错觉。

于 2012-12-11T09:56:47.320 回答