0

补丁是通过获取源代码文件的原始版本(我们称之为 rev1),对其进行更改(因此它变成 rev2),然后使用 diff 来完成的。

该补丁完全适用于 rev1,这很好。

但是,有时相同的补丁完全适用于同一文件的其他修改版本(尽管并非总是如此)。这究竟是什么时候发生的?

4

1 回答 1

0

发生这种情况的确切条件取决于您使用的补丁应用程序。然而,大多数补丁程序都有启发式算法,允许基本文件在某些​​方面与最初用于创建补丁的基本文件不同。

最有用的补丁格式在更改的行周围包含几行未更改的“上下文”行。补丁程序将使用补丁文件中的行号信息(可能不同)以及上下文行来查找在新的基础文件中应用更改的适当位置。通常,允许行号有所不同,但上下文行必须完全匹配。

在上下文行不同并且补丁程序找不到修改可以去哪里的情况下,它会遇到冲突(并且可能会生成“rejected hunk”输出)。

于 2012-08-20T23:55:59.970 回答