Mercurial - 关闭默认分支并将命名分支替换为新默认分支

时间:2013-02-20 16:22:34

标签: mercurial branching-and-merging

在一个mercurial repo中,“默认”分支已经过时了,以至于不再有意义地合并来自“develop”的更改,这是一个已命名的分支,它具有最新部署的应用程序版本。

不是将develop合并到默认值,而是如何关闭当前的默认分支,然后使用develop中的head创建一个新的默认分支?

我已经看到了一些类似的问题和答案,也许是相同的,但我仍然无法理解这应该如何运作。

谢谢!

3 个答案:

答案 0 :(得分:24)

如果defaultdevelop略有分歧,并且您希望default与合并后的develop完全相同,则需要一组略有不同的命令爱德华给你的东西(这也适用于developdefault)的直接后裔。

hg update -C default
hg -y merge --tool internal:fail develop
hg revert --all --no-backup -r develop
hg resolve --all --mark
hg commit -m "merge updating default to current develop"

这意味着任何冲突都将导致未解决的合并。然后,将所有恢复为与develop分支相同(没有备份,因此您不会遗留大量.orig文件)。

答案 1 :(得分:2)

根据您的评论,不需要关闭分支,这里有一系列步骤可以使默认分支与开发分支保持一致:

  1. hg update default
  2. hg merge --tool internal:other - 在为开发分支提供权限时进行合并
  3. hg diff -r develop - 与开发进行比较以确保您拥有完整的副本
  4. hg commit -m "merge updating default to current develop"
  5. 完成后,您应该有一个更新的默认值,它会反映开发分支,使它们恢复同步。

答案 2 :(得分:0)

我认为最好在Tortoisehg中使用一个概念来解释它是如何工作的。

  • hg update开发分支
  • 选择默认分支的头部,然后选择与本地
  • 合并
  • 然后选择放弃合并目标(其他)的所有更改,从而默认合并到开发中而不影响开发
  • 然后从开发负责人分支到默认值,使用hg branch default,默认重新启动