2012-07-23 58 views
0

我有一個特定的文件是這樣的:補丁不能proceeed一個具體的差異

+ 
+      %3)+Lorem 
+ 
+      %4)+Lorem 
+ 
+      %5)+Lorem 
+ 
+ 

我使用Python 2.7 difflib所有上下文行產生統一的diff:

--- bug-3.txt 2012-07-23 15:25:42 
+++ FILE 2012-07-23 15:25:42 
@@ -1,8 +1,10 @@ 
+ 
+      %3)+Lorem 
+ 
+      %4)+Lorem 
+ 
+      %5)+Lorem 
+ 
++      %6)+Lorem 
++ 
+ 

當我打電話補丁(patch --verbose bug-3.txt bug-3.patch)它給了我這個錯誤:

Hmm... Looks like a unified diff to me... 
The text leading up to this was: 
-------------------------- 
|--- bug-3.txt 2012-07-23 15:25:42 
|+++ FILE 2012-07-23 15:25:42 
-------------------------- 
Patching file bug-3.txt using Plan A... 
Hunk #1 FAILED at 1. 
1 out of 1 hunk FAILED -- saving rejects to file bug-3.txt.rej 
done 

我可能有補丁中的bug。你有什麼想法究竟是什麼原因導致這個錯誤以及如何處理它?

我運行Ubuntu 12.04和補丁程序2.6.1。

回答

1

它看起來像原始文件在每行的開始處包含一個空格,但該空格從diff中缺失。我希望讓diff輸出的是這個樣子:

--- bug-3.txt 2012-07-23 15:25:42 
+++ FILE 2012-07-23 15:25:42 
@@ -1,8 +1,10 @@ 
    + 
    +      %3)+Lorem 
    + 
    +      %4)+Lorem 
    + 
    +      %5)+Lorem 
    + 
+ +      %6)+Lorem 
+ + 
    + 

也許你產生差異之前,呼籲從文件中的每一行strip()

+0

你說得對。我有一個更復雜的文件,這只是改變。我輸入原始文件錯誤,它應該沒有每行上的空格。但我的例子工作,所以問題是我的文件中的其他問題。謝謝。 – snilard 2012-07-24 08:08:16

+0

我爲我的問題找到了解決方案。修補程序對於.patch文件中的新行的正確數量很不敏感。 – snilard 2012-07-24 12:12:21