0

我有一个这样的特定文件:

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

我使用带有所有上下文行的 python 2.7 difflib 生成统一差异:

--- 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。

4

1 回答 1

1

看起来原始文件在每行的开头都包含一个空格,但是差异中缺少该空格。我希望您的差异输出看起来像这样:

--- 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()在生成差异之前调用了文件中的每一行?

于 2012-07-23T16:31:59.150 回答