普通格式的差异文件给出"只有垃圾"错误......不想要统一/上下文

时间:2014-08-30 01:58:12

标签: linux diff patch

我正在尝试使用普通格式创建补丁然后应用它。尽管-ndiff都有patch-o上有明确的文件输出patch,但我收到错误:

patch: **** Only garbage was found in the patch input.

我该如何解决这个问题?在这种情况下,我无法使用统一或上下文补丁,因此这不是解决方案。

这是一个错误还是什么?编辑器格式似乎有用,出于某种原因:

$ echo a > a.txt
$ echo b > b.txt
$ diff -n a.txt b.txt > ab.diff
$ patch -n -o a.txt a.txt ab.diff
patch: **** Only garbage was found in the patch input.
$ diff -e a.txt b.txt > ab.diff
$ patch -e -o a.txt a.txt ab.diff
$ diff a.txt b.txt
$

这是在Linux Mint 16上,包含:

$ diff --version
diff (GNU diffutils) 3.2
$ patch --version
GNU patch 2.7.1

1 个答案:

答案 0 :(得分:3)

根据diff的{​​{3}},您没有使用-n的常规差异格式,而是使用man page一个:

-n --rcs
   Output an RCS format diff.

要使用普通格式,您可以使用--normal选项。 在RCS命令中,-n指定正常模式。所以它不是一个错误,更不是一个不愉快的命名惯例。

实施例

$ echo a > a.txt
$ echo b > b.txt
$ diff --normal a.txt b.txt > ab.diff
$ patch --normal a.txt ab.diff
$ diff a.txt b.txt
$

(您可以避免--normal标志,因为它们是两个命令的默认格式)