Mercurial:如何在不丢失历史记录的情况下将一个分支分成两个?
Mercurial: how can I split a single branch into two without losing history?
我有一个带有默认分支的 Mercurial 存储库,该分支在顶层包含两个目录:"demo/" 和 "product/"。我想执行以下操作,如果可能,保留更改历史记录:
1) 将 "demo/" 中的所有内容放入新的演示分支。 demo/ 下的所有文件将在这个新分支中向下移动一级,并且 demo/ 文件夹将不存在于 default 或 demo 分支中。
2) 在默认分支中将 "product/" 中的所有内容向下移动一级,并删除 product/ 目录。
第二部分看起来很简单,只需 "hg mv" 将存储在 product/ 中的所有文件和文件夹降到下一级即可完成。所以我认为只要 hg mv 处理产品/目录树中所有文件的路径发生变化的事实,它就会起作用。
第一个问题是我遇到的问题。具体来说,如何在不丢失 demo/.经过一番阅读, hg rebase 似乎不是解决方案。这里有很多历史(这个存储库最初是 CVS,然后迁移到 SVN,现在是 Mercurial)。我搜索了这个问题的解决方案,所有这些解决方案都专注于将整个变更集移动到不同的分支,这不是我想要的。对我来说最好的方法是什么?
如果我没理解错的话,这需要 3 个步骤。
第 1 步
- 在
default
分支中
- 移动"product/"
- 提交(提交 A)
第 2 步
- 还在
default
分支
- 移动"demo/"
- 合并或创建
demo
分支 (提交 B)
第 3 步
- 更新 提交 A(应该回到
default
分支)
- 移除"demo/"
- 提交(提交 C)
我有一个带有默认分支的 Mercurial 存储库,该分支在顶层包含两个目录:"demo/" 和 "product/"。我想执行以下操作,如果可能,保留更改历史记录:
1) 将 "demo/" 中的所有内容放入新的演示分支。 demo/ 下的所有文件将在这个新分支中向下移动一级,并且 demo/ 文件夹将不存在于 default 或 demo 分支中。
2) 在默认分支中将 "product/" 中的所有内容向下移动一级,并删除 product/ 目录。
第二部分看起来很简单,只需 "hg mv" 将存储在 product/ 中的所有文件和文件夹降到下一级即可完成。所以我认为只要 hg mv 处理产品/目录树中所有文件的路径发生变化的事实,它就会起作用。
第一个问题是我遇到的问题。具体来说,如何在不丢失 demo/.经过一番阅读, hg rebase 似乎不是解决方案。这里有很多历史(这个存储库最初是 CVS,然后迁移到 SVN,现在是 Mercurial)。我搜索了这个问题的解决方案,所有这些解决方案都专注于将整个变更集移动到不同的分支,这不是我想要的。对我来说最好的方法是什么?
如果我没理解错的话,这需要 3 个步骤。
第 1 步
- 在
default
分支中 - 移动"product/"
- 提交(提交 A)
第 2 步
- 还在
default
分支 - 移动"demo/"
- 合并或创建
demo
分支 (提交 B)
第 3 步
- 更新 提交 A(应该回到
default
分支) - 移除"demo/"
- 提交(提交 C)