我已经用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,patch将通过读取rakefile2.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的文件(例如,在我的例子中),从而使其成为更“通用”的补丁?
谢谢,格伦
发布于 2013-02-12 21:41:11
补丁是否只查看路径末尾的文件名的头部,而不考虑目录?
这就是它默认做的事情。请参阅man patch中-p选项的说明。看起来-p0就是你想要的。
https://stackoverflow.com/questions/14833818
复制相似问题