我们有两个脑袋。一个是我们的主要开发负责人,另一个是我忘记了直到今天。我们发现了一个错误,并在我们的主要开发分支中修复了它,我刚刚意识到它应该在旧的分支中修复。
我认为最好在旧分支上进行更改并将其与最新分支合并,但我们没有这样做。 mercurial可以处理这个吗?我们没有尝试做过这样的事情,我无法真正理解它将如何完成。
我们有两个脑袋。一个是我们的主要开发负责人,另一个是我忘记了直到今天。我们发现了一个错误,并在我们的主要开发分支中修复了它,我刚刚意识到它应该在旧的分支中修复。
我认为最好在旧分支上进行更改并将其与最新分支合并,但我们没有这样做。 mercurial可以处理这个吗?我们没有尝试做过这样的事情,我无法真正理解它将如何完成。
是的,你有两个不错的选择:
这个版本介绍了 贪污命令 它可以以智能方式向后端移动。 “智能”是它将在内部使用合并,这意味着你得到
支持重命名: 想象一下,你修复了文件中的错误 foo.c
在开发分支上。在较旧的维护分支中 foo.c
被称为 bar.c
。运用 hg graft
,改变 foo.c
可以正确地合并到旧的 bar.c
。
三向合并: 嫁接涉及到 扭曲图表 并在该临时图中合并。三向合并的优点是您可以使用常规图形合并工具来解决冲突。
要复制提示 default
到 old-branch
你干脆跑
$ hg update old-branch
$ hg graft default
在我们接受移植指令之前, 移植延期 是要走的路。这个简单的扩展将导出一个变更集作为补丁,并尝试将补丁应用到其他一些版本。
因为我们正在处理“哑”补丁,所以重命名之类的东西不会被考虑在内,因为没有三向合并,所以你不会得到你的合并工具的支持。尽管如此,我发现移植在实践中非常有效。
使用移植很简单:
$ hg update old-branch
$ hg transplant default
这非常接近于跑步
$ hg update old-branch
$ hg export default | hg import -
除了移植还添加了一段元数据,记录移植变更集中的原始变更集。这可以用来跳过未来的移植。