通过获取源代码文件的原始版本(让我们称之为rev1),对其进行更改(因此它变为rev2),然后使用diff来完成补丁。
补丁适用于rev1,这很好。
但是,有时相同的补丁会干净地应用于同一文件的其他修改版本(但并非总是如此)。究竟是这样的?
答案 0 :(得分:1)
发生这种情况的确切条件取决于您使用的补丁程序应用程序。但是,大多数补丁程序都有启发式算法,这些算法允许基本文件在某些方面与最初用于创建补丁的基本文件不同。
最有用的补丁格式在更改的行周围包含几行未更改的“上下文”行。补丁程序将使用补丁文件中的行号信息(可能不同)与上下文行一起使用,以查找应用更改的适当位置在新基本文件中的位置。通常,允许行号稍有不同,但上下文行必须完全匹配。
如果上下文行不同并且补丁程序找不到修改的位置,则会遇到冲突(并且可能会生成“拒绝的hunk”输出)。