如何添加到统一补丁文件中?

如何添加到统一补丁文件中?

如果我有一个统一补丁格式的补丁文件(如下例所示),如何向其中添加行,以便(应用的)补丁添加这些行?

--- lao 2002-02-21 23:30:39.942229878 -0800
+++ tzu 2002-02-21 23:30:50.442260588 -0800
@@ -1,7 +1,6 @@
-The Way that can be told of is not the eternal Way;
-The name that can be named is not the eternal name.
The Nameless is the origin of Heaven and Earth;
-The Named is the mother of all things.
+The named is the mother of all things.
+
Therefore let there always be non-being,
so we may see their subtlety,
And let there always be being,
@@ -9,3 +8,6 @@
The two are the same,
But after they are produced,
they have different names.
+They both may be called deep and profound.
+Deeper and more profound,
+The door of all subtleties!

答案1

简而言之:你不这样做。

长:这就是原因

  • 统一差异是脚本, 使用行号计数与 diff 的内容相关联。
  • 可以手动对此脚本进行简单的更改(我这样做......),但是
  • Unified-diff 主要对程序有用patch,并且
  • patch检查 diff 各部分之间的一致性,以及
  • patch将拒绝发现不一致的部分。

这些行包含行号和计数:

@@ -1,7 +1,6 @@
@@ -9,3 +8,6 @@

并且计数必须与差异的其余行中的前导+或标记数相匹配。-

所以你不要手动执行此操作。有人可以编写一个程序来执行此操作。然而,它并不在patchutils(某人关于操作补丁文件的有用应用程序的想法),尽管您可能会发现它rediffcombinediff脚本有助于手动编辑补丁文件。

在任何情况下都很少有应用程序处理补丁文件(也许某人已经写过一篇了)。

这里通常的做法是通过以下方式重新生成差异

  1. 获取原始来源(补丁之前)
  2. 制作源代码的补丁版本(应用补丁)
  3. 进行额外的更改
  4. 构建一个新补丁(跨越两组更改)或增量补丁(仅针对您的更改)。

使用diff和来实现这一点很简单patch。因为它很简单,所以没有多少人会编写工具来做到这一点。

进一步阅读:

相关内容