我有一个这样的特定文件:
+
+ %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(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
我的补丁中可能存在错误。你知道究竟是什么导致了这个错误以及如何处理它吗?
我运行Ubuntu 12.04并修补补丁2.6.1。
答案 0 :(得分:1)
看起来原始文件在每行的开头包含一个空格,但差异中缺少该空间。我希望您的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()