mercurial中的快进分支

时间:2011-04-19 13:31:05

标签: mercurial fast-forward

出于某种原因,我有以下情况:

enter image description here

现在我想摆脱default_2并快进default到转89.但是当我这样做时

hg up -r default
hg transplant 61:89

hg transplant -b default_2

Mercurial(1.8.2 + 20110401)只是将我的工作副本更新为rev 89.使用mq扩展名看起来我必须逐个指定所有中间修订版。

所以问题是:

  1. 为什么transplant不起作用? (这里建议:https://www.mercurial-scm.org/wiki/RebaseProject#When_rebase_is_not_allowed
  2. 有没有办法快速前进而没有太多痛苦?

3 个答案:

答案 0 :(得分:4)

使用Mercurial Queues,您可以:

hg qinit
hg qimport -r 61:89
hg qpop -a           # unapply all patches
hg up default        # return to your default branch
hg qpush -a          # apply all patches on default
hg qfinish -a        # move applied patches into repo history

注意:这假设修订版61:89尚未推送到公共回购。给定的mq命令将修改历史记录。如果已经推送了这些修订,那么最好只关闭default2分支,然后将default2合并到default

答案 1 :(得分:0)

从Mercurial 2.0开始,您可以使用 graft 命令(内置命令主要取代移植扩展名):

hg graft 61:89

另请参阅differences between graft and transplant上的相关问题。

请注意,Mercurial不支持命名分支之间的实际快速转发的原因是分支名称是Mercurial提交对象的一部分。另请参阅此article detailing the Mercurial branch model

答案 2 :(得分:0)

尝试:

 hg branch --force default

重新创建名为default

的新分支