【问题标题】:How to combine my modifications to a newer version?如何将我的修改与更新的版本结合起来?
【发布时间】:2014-06-13 15:09:31
【问题描述】:

好的,这是我的情况:

我正在使用开源软件包。假设名称是 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 覆盖(并提交),然后对差异进行逐个文件分析,然后应用它们手工。

您认为有更好的方法吗?

【问题讨论】:

    标签: mercurial diff patch


    【解决方案1】:

    几乎,除了您应该能够让 Mercurial 处理差异。

    所以基本的工作流程是(类似于你的):

    • 将您的存储库更新到 3.0.2(hg update <tag> - 您确实标记了该版本,对吧?)
    • 在顶部解压 3.1.0 并提交(您可能希望将其标记为 upstream-3.1.0 之类的东西)
    • 你现在有两个头(见hg heads
    • 更新到原来的头像
    • 合并(手指交叉)

    这就是它应该如何工作的方式,如果您所做的更改不会与上游更改发生冲突,那么实际上它可能会很好地工作。否则,您会遇到或多或少的冲突,您可以一一解决。

    在本地其他地方克隆您的存储库可能是最明智的,并在克隆的存储库中执行此操作。这样一来,如果一切都变得非常糟糕,您可以将那个克隆吹走并重新开始。毕竟好看又整齐,就推回原来的样子吧。

    您可能希望将上游更改放在不同的分支上;或者,如果这感觉很麻烦,请记住更新到 upstream-3.1.0,以便在 3.1.1 版或接下来的任何版本中使用相同的技巧。

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 2011-01-02
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多