Patch

修補參數-p0和-p1之間有什麼區別?

  • November 1, 2018

patch -p0和有什麼區別patch -p1

有什麼區別嗎?

創建更新檔最常見的方法是執行diff命令或一些版本控制的內置diff命令。有時,您只是比較兩個文件,然後執行diff如下:

diff -u version_by_alice.txt version_by_bob.txt >alice_to_bob.patch

然後你會得到一個包含對一個文件的更改並且根本不包含文件名的更新檔。應用該更新檔時,您需要指定要將其應用到哪個文件:

patch <alice_to_bob.patch version2_by_alice.txt

通常,您要比較目錄中包含的整個多文件項目的兩個版本。一個典型的呼叫diff看起來像這樣:

diff -ru old_version new_version >some.patch

然後更新檔包含文件名,在標題行中給出,如diff -ru old_version/dir/file new_version/dir/file. 您需要告訴從文件名patch中去除前綴(old_version或)。new_version這就是-p1意思:剝離一級目錄。

有時,更新檔中的標題行直接包含文件名,沒有前導。這在版本控制系統中很常見;例如cvs diff生成看起來像的標題行diff -r1.42 foo。然後沒有要剝離的前綴,因此您必須指定-p0.

在您正在比較的樹中沒有子目錄的特殊情況下,不需要任何-p選項:patch將丟棄文件名的所有目錄部分。但大多數情況下,您確實需要-p0-p1,具體取決於更新檔的製作方式。

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