我正在尝试使用不同目录中的2个文件应用补丁。输出文件也应该在不同的目录中。第一个文件位于 /var/local/documents/document.xml ,补丁文件位于 /var/local/patches/patch.diff ,我想要输出文件应该在 /var/local/final/final.xml 中创建。
当文件位于同一目录中时,此命令有效:
patch document.xml -i patch.diff -o final.xml
但是当它们位于不同的目录中时,我尝试使用以下命令:
补丁 /var/local/documents/document.xml -i /var/local/patches/patch.diff -o /var/local/final/final.xml
我收到以下错误:
(Stripping trailing CRs from patch.)
patching file {file}
Hunk#1 FAILED at 20.
1 out of 1 hunk FAILED -- saving rejects to file {file}
我已经读过某些地方,我应该使用-d和-p来正确使用目录,但我不知道应该怎么做......
答案 0 :(得分:5)
是的,它是 -p 开关(在您的情况下,它应该从补丁路径中删除2个条目):
cd /var/local/documents
patch -p 2 -o ../final/final.xml document.xml < ../patches/patch.diff
答案 1 :(得分:1)
试试这个:
$ mv /var/local/final/final.xml /var/local/final/document.xml
$ (cd /var/local/final && patch document.xml) < patch.diff
$ mv /var/local/final/document.xml /var/local/final/final.xml