我使用以下方法制作了一个补丁diff
:
diff -u /home/user/onderzoeksstage/omf/Rakefile /home/user/onderzoeksstage/Rakefile > rakefile2.patch
我已将此 rakefile2.patch 放在另一个目录中:/home/user/onderzoeksstage/omf/confine/patches
. 现在,我假设我可以转到收集所有补丁的目录,调用patch < rakefile2.patch
并通过读取 rakefile2.patch 标头patch
知道在哪里找到要修补的文件(原始文件)。/home/user/onderzoeksstage/omf/Rakefile
但是这样做时,patch
它说它没有找到要修补的文件:
[user@localhost patches]$ patch < rakefile2.patch
can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- /home/user/onderzoeksstage/omf/Rakefile 2013-02-12 14:11:49.809792527 +0100
|+++ /home/user/onderzoeksstage/Rakefile 2013-02-12 12:17:50.314831492 +0100
--------------------------
File to patch: ...
...
所以我的假设显然是错误的,那么它是如何patch
工作的呢?去/home/user/onderzoeksstage/omf/
和打电话时patch < rakefile2.patch
确实有效。是否patch
只查看路径末尾的文件名标题而不考虑目录?所以我试图完成的事情永远不会奏效?为什么是这样; 这是因为这样可以将补丁应用于任何名为 Rakefile 的文件(例如在我的情况下),从而使其成为更“通用”的补丁?
谢谢,格伦