Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
补丁是通过获取源代码文件的原始版本(我们称之为 rev1),对其进行更改(因此它变成 rev2),然后使用 diff 来完成的。
该补丁完全适用于 rev1,这很好。
但是,有时相同的补丁完全适用于同一文件的其他修改版本(尽管并非总是如此)。这究竟是什么时候发生的?
发生这种情况的确切条件取决于您使用的补丁应用程序。然而,大多数补丁程序都有启发式算法,允许基本文件在某些方面与最初用于创建补丁的基本文件不同。
最有用的补丁格式在更改的行周围包含几行未更改的“上下文”行。补丁程序将使用补丁文件中的行号信息(可能不同)以及上下文行来查找在新的基础文件中应用更改的适当位置。通常,允许行号有所不同,但上下文行必须完全匹配。
在上下文行不同并且补丁程序找不到修改可以去哪里的情况下,它会遇到冲突(并且可能会生成“rejected hunk”输出)。