Mercurial:如何将一个分支分成两个而不丢失历史记录?

时间:2016-09-13 18:45:49

标签: mercurial branch

我有一个mercurial存储库,其默认分支包含顶层的两个目录:“demo /”和“product /”。我想做以下事情,如果可能的话保留更改历史记录:

1)将“demo /”中的所有内容放入新的演示分支中。 demo /中的所有文件将在这个新分支中向下移动一级,默认或演示分支中不会存在任何demo /文件夹。

2)将“product /”中的所有内容向下移动到默认分支中,然后删除产品/目录。

第二部分看起来很简单,可以使用简单的“hg mv”对存储在product /下面的一个级别的所有文件和文件夹进行操作。所以我认为只要hg mv处理产品/目录树中所有文件的路径发生变化这一事实就行了。

第一个问题是我遇到了麻烦。具体来说,如何做而不会丢失demo /中包含的所有文件的历史记录。经过一番阅读,hg rebase似乎不是一个解决方案。这里有很多历史(这个存储库最初是CVS,然后迁移到SVN,现在是Mercurial)。我搜索了这个问题的解决方案,所有这些都集中在将整个变更集移动到不同的分支,这不是我想要的。对我来说,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,这将需要3个步骤。

第1步

  • default分支
  • 移动"产品/"
  • 提交(提交A

第2步

  • 仍然在default分支
  • move" demo /"
  • 合并或创建demo分支(提交B

第3步

  • 更新为提交A (应该回到default分支)
  • 删除"演示/"
  • 提交(提交C