正常格式的差异文件给“只垃圾”错误…不希望统一/上下文

我试图使用正常的格式来创build一个补丁,然后应用它。 尽pipe-ndiffpatch ,并且在patch上显式输出了-o ,我得到的错误是:

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

我该如何解决这个问题? 在这种情况下,我不能使用统一或上下文补丁,所以这不是一个解决scheme。

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

 $ 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 

根据diff的手册页 ,你不使用普通的差异格式与-n而是RCS之一:

 -n --rcs Output an RCS format diff. 

为了使用正常的格式,你可以使用--normal选项。 在patch命令中, -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标志,因为它们是这两个命令的默认格式)