2011-03-24 53 views
30

我在Bitbucket和我的本地机器上有一个Mercurial repo,它们都是镜像,是最新的。我创建了一个功能分支,反映在两个回购协议中。我在功能分支中完成了所有工作。使另一个分支默认?

功能分支现在已完成,我现在要将其设置为主repo和本地副本的默认值。我不关心默认分支,功能分支中已经有足够的工作,我所要做的就是将它指定为新的默认分支。

我不认为我想合并也不应该?我该如何做到这一点,使本地和远程都不会感到困惑?

+1

当我开始使用Mercurial时,我在处理分支名称方面有类似的尝试,但[已被建议做得更好](http://stackoverflow.com/questions/1405604/managing-release-branches-in-mercurial)。 – 2011-03-24 20:06:17

回答

24

刚刚合并feature-branchdefault然后关闭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分支,留下两个头这是不理想的。

+0

正在希望更多的东西像切换和重命名,但如果这是这样的话!感谢您的快速响应.. – dartdog 2011-03-25 13:30:01

7

我succeded不通过关闭默认分支合并。

在我的开发库的工作目录:

$ hg update default 

$ hg commit --close

那么我的开发分支成为新的默认分支。 但我不知道为什么我的开发分支被选为 作为新的默认规则。 我认为这是因为它是我的提示? (或者最后一次修改的分支?(提示?))

我也认为你有下一次重复。 因为我认为我选择的分支名称被“默认”名称“覆盖”。

这将是不错的分公司名称。

DEV-项目名称,version.x =默认

问候

+0

另一个好方法... – dartdog 2011-06-04 15:28:18

+0

真棒回答... – 2012-11-21 15:40:23

17

由于水银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上的最后提交。

+0

添加书签将无法正常工作:即使分支已关闭,“abort:书签不能有现有分支的名称”(hg 2.7 .2) – bartekbrak 2013-11-07 22:05:56

+0

@ user35186:感谢您的提醒。我想这个限制是在稍后添加的。幸运的是,后来又增加了另一种机制:Mercurial现在会自动在新克隆中签出'@'书签。 – 2013-11-09 09:48:06

1

我想做的只是你描述和寻找的东西,直到我找到一个答案,它使用revert命令来完成你所描述的。下面是我使用的代码:

汞柱恢复--all --rev $ {1}

汞柱提交-m “恢复分支$ {1}默认的”

,其中$ {1}是修订号或分支名称。这两行实际上是bash脚本的一部分,但如果您想手动执行,它们可以自行工作。

如果您需要向发布分支添加热修复,但需要从默认生成(直到我们获得我们的CI工具并且能够从分支构建并随后取消发布分支),这非常有用。 。

相关问题