如何在Mercurial中为非尖端修订创建分支?

Aar*_*lla 6 mercurial branch

在我的回购中,我有修改1到10.我已经推高到5(所以下一个hg push将发布版本6-10).

但我现在必须打断我的工作,结果并非100%完成.所以我想将修订版6-10移到一个新的"实验性"分支中,以允许其他人完成工作而不会破坏每个人的来源.

如何将分支添加到非尖端修订版(在我的情况下:从修订版6开始)?或者我应该使用完全不同的方法?

Tim*_*gan 7

如果不修改历史记录,则无法在事后应用分支名称.

最简单的方法是让其他用户使用修订版5作为他们创建的任何更改的父级.例如,其他用户会:

  1. hg clone <your repo> 甚至 hg clone --rev 5
  2. hg update -r 5
  3. 工作工作工作
  4. hg commit

当他们提交更改时,它将在default分支上创建第二个头,但这不会产生任何问题.实验性更改完成后,您只需将两个头合并在一起即可.

话虽这么说,将变更集移动到分支上可以使用Mercurial Queues(MQ)来完成.以下序列显示了如何完成:

  1. hg qinit (创建新的补丁队列)
  2. hg qimport --rev 6:10 (将r6-10导入新的补丁队列)
  3. hg qpop -a (从工作副本中删除所有补丁)
  4. hg branch <branch name> (创建新的实验分支)
  5. hg qpush -a (将所有补丁应用到您的分支)
  6. hg qfinish -a (将所有补丁转换为永久更改集)