2016-06-13 117 views
1

我正在嘗試修補文件。避免修補程序命令詢問要修補哪個文件「文件修補」錯誤

補丁文件位於要修補的文件列表中。

當我運行讚揚

patch < file.patch

它提示我

File to patch:

如何避免這種情況?我應該在補丁文件中添加什麼內容以自動檢測應修補的文件名

+0

你正在使用什麼格式的補丁文件? (包括文件的前幾行將有助於識別此文件。) – duskwuff

+0

補丁文件通常是一個統一的差異文件(即'diff -u'的輸出),因此它會在'patch'識別的頂部放置一些文件名。但是,文件名可能是'a/subdir/file1',而你當前的目錄就在'subdir'上面。您可能需要使用'patch'的'-p'選項(例如'patch -p1 <...'或'patch -p2 <...')。調整以適應 –

+0

繼續Craig的評論,'-pX'選項告訴'patch'從左邊剝離路徑的(X)部分(斜線)。如果你的錯誤*無法找到*'a/path/to/filename','File to patch:'並且你知道你的系統上的文件位於'path/to/filename',你可以使用'path - p1'從路徑的開頭去掉'a /',使'patch'找到要在你的系統上打補丁的文件。 –

回答

0

當使用diff創建補丁時,默認情況下,輸出格式不包含原始文件名的文件名。你可以用這樣的-u選項改變了...

$ diff -u OriginalFile NewFile >NewFile.patch 

然後,您可以簡單地...

$ patch -u <NewFile.patch 

欲瞭解更多信息,請閱讀有關unified GNU diff format

+0

這不會避免交互的問題/要點,無論指定了哪個「-p」,至少如果刪除了「NewFile」。沒有補丁手冊頁或教程解釋瞭如果第二個文件不存在時會發生什麼 - 這是我認爲修補程序唯一的邏輯用例。 –