如何将我的修改组合到更新的版本?

时间:2014-06-13 15:09:32

标签: mercurial diff patch

好的,这是我的情况:

我使用的是开源软件包。我们假设名称是 MyApp

由于我的需要,我修改了MyApp v3.0.2 的源代码。它有效。

现在,MyApp(上游)已更新为 v3.1.0 ,并且更改日志很有趣,因为它提到了一些我非常希望应用于我的安全修复程序。

我使用Mercurial跟踪了v3.0.2以及随后的更改。现在,将这些更改集成到v3.1.0的最佳方法是什么?

我最初的计划:对3.0.2执行我的版本差异,恢复到3.0.2,用3.1.0覆盖(并提交),然后对差异进行逐个文件分析,并应用它们用手。

你认为有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

差不多,除了你应该能让Mercurial处理差异。

所以基本的工作流程(与你的相似):

  • 将您的存储库更新为3.0.2(hg update <tag> - 您确实标记了该版本,对吗?)
  • 在顶部解压缩3.1.0并提交(您可能希望将其标记为upstream-3.1.0
  • 你现在有两个脑袋(见hg heads
  • 更新到原始主管
  • 合并(用手指交叉)

这就是它应该如何工作,如果你所做的改变不与上游的变化发生冲突,它实际上可能会有效。如果做不到这一点,您将获得更多或更少的冲突,您可以通过这些冲突逐一解决。

将您的存储库克隆到本地其他地方可能是最明智的,并在克隆的存储库中执行此操作。这样一来,如果一切都发生了可怕的错误,你就可以把那个克隆吹走,重新开始。毕竟很好,整洁,只需将它推回原来。

您可能希望将上游更改放在不同的分支上;或者,如果这感觉很麻烦,只要记得在版本3.1.1或者下一个版本中使用相同的技巧时更新到upstream-3.1.0