Python 修补程序无法处理一个特定的差异
我有一个这样的特定文件:Python 修补程序无法处理一个特定的差异,python,diff,patch,Python,Diff,Patch,我有一个这样的特定文件: + + %3)+Lorem + + %4)+Lorem + + %5)+Lorem + + --- 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
+
+
--- 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
+ +
+
我使用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。看起来原始文件在每行的开头都包含一个空格,但是diff中缺少该空格。我希望您的diff输出如下所示:
+
+ %3)+Lorem
+
+ %4)+Lorem
+
+ %5)+Lorem
+
+
--- 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()
。您是对的。我有一个稍微复杂一点的文件,这是唯一的改变。我输入的原始文件错误,它应该在每行上没有前导空格。但我的例子是有效的,所以问题是我的文件中还有其他人。谢谢。我找到了解决问题的办法。补丁对.Patch文件的ned上正确数量的新行不太敏感。