【发布时间】:2018-02-21 11:48:25
【问题描述】:
场景:我有两个 Mercurial 存储库,我们称它们为“Original”和“NewProduct”。
原始历史有 1072 次修订。 NewProduct 创建如下:
- 将原始更新为小费 (r1072)
- 将工作目录复制到新文件夹
- 在该文件夹中创建存储库 NewProduct
- 添加所有文件并对 NewProduct 执行初始提交
本质上,Original 的当前状态是用来创造一个没有 Original 历史的新产品。
由于两个产品的方向发生了意想不到的变化,它们将比最初想象的要相似得多。许多即将发生的变化将与这两种产品兼容。因此,能够在它们之间移植变更集将非常有用。
问题:我希望将 NewProduct 作为原始存储库中的命名分支。这可能吗?我该怎么做?
解决方案的尝试:
有一些关于 SO 的问题看起来很相似,例如Mercurial merge repository as branch。我的场景的主要区别在于,另一个存储库不是第一个存储库的克隆——它是基于第一个存储库的工作目录创建的。因此,这些解决方案似乎并不适用。
我第一次尝试解决这个问题是使用补丁。
我认为如果 NewProduct/r0 中的文件与 Original/r1072 中的文件相同,那么从 NewProduct/r1 开始所做的任何更改集理论上都可以应用在 Original/r1072 之上。
这就是我所做的:
- 将 NewProduct 的修订 1..tip 导出为补丁
- 在 Original 中创建新的命名分支
- 导入补丁
此过程在 NewProduct 中的第一个合并变更集处停止。我不明白补丁与变更集不是一回事——补丁只有一个父级,而合并变更集有两个。
注意:我主要在 TortoiseHg 工作,所以如果可以使用 GUI 完成解决方案,那将是可取的,但命令行也是可以接受的。
【问题讨论】:
标签: mercurial branching-and-merging