我在Bitbucket和我的本地机器上有一个Mercurial repo,它们都是镜像,是最新的。我创建了一个功能分支,反映在两个回购协议中。我在功能分支中完成了所有工作。使另一个分支默认?
功能分支现在已完成,我现在要将其设置为主repo和本地副本的默认值。我不关心默认分支,功能分支中已经有足够的工作,我所要做的就是将它指定为新的默认分支。
我不认为我想合并也不应该?我该如何做到这一点,使本地和远程都不会感到困惑?
我在Bitbucket和我的本地机器上有一个Mercurial repo,它们都是镜像,是最新的。我创建了一个功能分支,反映在两个回购协议中。我在功能分支中完成了所有工作。使另一个分支默认?
功能分支现在已完成,我现在要将其设置为主repo和本地副本的默认值。我不关心默认分支,功能分支中已经有足够的工作,我所要做的就是将它指定为新的默认分支。
我不认为我想合并也不应该?我该如何做到这一点,使本地和远程都不会感到困惑?
刚刚合并feature-branch
为default
然后关闭feature-branch
:
$ hg checkout default
$ hg merge feature-branch
$ hg commit
$ hg checkout feature-branch
$ hg commit --close-branch
有没有更干净和明智的方式(即我所知道的),以“让feature-branch
默认”。
一两件事,就不会那样好,但你可以做的,是让承诺default
上的feature-branch
顶部:
$ hg checkout feature-branch
$ hg branch default
$ hg commit
但是,这将在default
分支,留下两个头这是不理想的。
正在希望更多的东西像切换和重命名,但如果这是这样的话!感谢您的快速响应.. – dartdog 2011-03-25 13:30:01
我succeded不通过关闭默认分支合并。
在我的开发库的工作目录:
$ hg update default
$ hg commit --close
那么我的开发分支成为新的默认分支。 但我不知道为什么我的开发分支被选为 作为新的默认规则。 我认为这是因为它是我的提示? (或者最后一次修改的分支?(提示?))
我也认为你有下一次重复。 因为我认为我选择的分支名称被“默认”名称“覆盖”。
这将是不错的分公司名称。
DEV-项目名称,version.x =默认
问候
另一个好方法... – dartdog 2011-06-04 15:28:18
真棒回答... – 2012-11-21 15:40:23
由于水银2.4,您可以创建一个名为书签和@
水银将签出该修订新的克隆。
不过,我还是会尽量坚持使用default
作为其中主要的发展发生了分公司。这样做将导致对已经使用水银开发商惊喜最少的 - 在水银维基describes the standard way to use branches。
如果按照使用default
作为发展的主要分支的常规建议,那么你应该,你把它合并前关闭您的特性分支:
$ hg update feature-branch
$ hg commit --close-branch -m "Feature done, merging into default branch"
$ hg update default
$ hg merge feature-branch
$ hg commit
如果您还没有做任何工作,在你启动特性分支后的默认分支上,那么这种合并将是微不足道的,并且没有冲突。否则,你将不得不解决冲突。如果你一定要保持一切从功能分支,那么你可以做
$ hg merge --noninteractive --tool internal:local feature-branch
$ hg revert --all --rev feature-branch
,而不是上面只是hg merge
。这将确保default
上的新提交看起来完全像feature-branch
上的最后提交。
添加书签将无法正常工作:即使分支已关闭,“abort:书签不能有现有分支的名称”(hg 2.7 .2) – bartekbrak 2013-11-07 22:05:56
@ user35186:感谢您的提醒。我想这个限制是在稍后添加的。幸运的是,后来又增加了另一种机制:Mercurial现在会自动在新克隆中签出'@'书签。 – 2013-11-09 09:48:06
我想做的只是你描述和寻找的东西,直到我找到一个答案,它使用revert命令来完成你所描述的。下面是我使用的代码:
汞柱恢复--all --rev $ {1}
汞柱提交-m “恢复分支$ {1}默认的”
,其中$ {1}是修订号或分支名称。这两行实际上是bash脚本的一部分,但如果您想手动执行,它们可以自行工作。
如果您需要向发布分支添加热修复,但需要从默认生成(直到我们获得我们的CI工具并且能够从分支构建并随后取消发布分支),这非常有用。 。
当我开始使用Mercurial时,我在处理分支名称方面有类似的尝试,但[已被建议做得更好](http://stackoverflow.com/questions/1405604/managing-release-branches-in-mercurial)。 – 2011-03-24 20:06:17