我有三个 PHP 文件:
- 1.php - OSS 软件的 1.0 版(vanilla)
- 1a.php - OSS 软件的 1.0 版(带有定制)
- 2.php - OSS 软件的 1.1 版(vanilla)
我想使用 diff/patch(或类似工具)创建一个补丁文件,它将我对 1.0 版所做的修改与 1.1 版中所做的上游更改合并。实现这一目标的最佳方法是什么?
非常感谢。
最佳答案
使用这个:
$ diff -u 1.php 1a.php > customizations.patch
这将为您提供文件 1.0 版的原始副本和自定义副本之间所有更改的统一差异。
您可以尝试将这些更改应用到新文件 2.php,如下所示:
$ patch -p0 2.php customizations.patch
但是请注意,如果源代码更改太多,这可能会失败并出现大量被拒绝的 hunk。不过,仅仅获得统一的差异可能会被证明是有用的,因为您随后可以手动重新集成您的定制以适应新的源代码。
如果可能的话,我会做的是获取自由软件项目使用的版本控制存储库的本地副本。然后,创建它的一个分支并集成您的定制,然后看看您是否可以通过将自那时以来的上游提交合并到您的分支中来推进事情。没有看到所有涉及的东西,我不能告诉你这将是一个微不足道或复杂的过程,但它可能比仅使用 diff 和 patch 更容易。
注意这不适用于多个文件;如果将来需要对多个文件执行此操作,则需要对两个不同目录树中的两组不同文件(具有相同文件名)使用 diff。我认为现在提及这件事可能不是一个坏主意,以防万一它被证明是你将来遇到的情况。
关于php - 使用差异/补丁合并 PHP 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412055/