Diff

如何添加到統一的更新檔文件?

  • July 20, 2016

如果我有一個統一更新檔格式的更新檔文件,如下例所示,如何向其中添加行,以便(應用的)更新檔添加這些行?

--- 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!

簡而言之:你不這樣做。

龍:這就是為什麼

  • 統一差異是一個腳本,使用與差異內容相關的行號計數
  • 可以手動對此腳本進行簡單的更改(我會…),但是
  • 統一差異主要對patch程序有用,並且
  • patch檢查差異部分之間的一致性,以及
  • patch將拒絕它發現不一致的部分。

這些行包含行號和計數:

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

並且計數必須與差異剩餘行中的前導數+或標記數相匹配。-

因此,您無需手動執行此操作。有人可以編寫一個程序來做到這一點。但是,它不在patchutils(有人認為對操作更新檔文件有用的應用程序的想法),儘管您可能會發現它rediffcombinediff腳本有助於手動編輯更新檔文件。

在任何情況下,很少有應用程序可以處理更新檔文件(也許有人已經編寫了一個)。

通常的做法是通過以下方式重新生成差異

  1. 獲取原始來源(更新檔之前)
  2. 製作源的更新檔版本(應用更新檔)
  3. 進行其他更改
  4. 建構一個新更新檔(跨越兩組更改)或增量更新檔(僅針對您的更改)。

diff使用and很簡單patch。因為它很簡單,所以沒有多少人會編寫工具來做到這一點。

進一步閱讀:

引用自:https://unix.stackexchange.com/questions/296911