patch命令对于补丁路径的概念。
如果两个路径都是相对路径:
如果两个一个是相对,一个绝对路径:如果两个都是绝对路径:
经过测试:都是先找短的,再找长的,不管是第一个还是第二个。
总结:先找短的,找不到再找长的。如果两个长度相同,则找第一个,找不到找第二个。
所以打补丁的人拿到补丁后,找到打补丁处和第一个或者第二个的相对路径差即可。
diff -ru home2/aa/bb/cc/text.txt 2016-03-14 09:52:34.000000000 +0800
+++ aa/bb/cc/test.txt 2016-03-31 16:27:17.000000000 +0800
你在目录dd下,下面是aa/bb/cc/test.txt,你想打/home/dd/aa/bb/cc/text.txt,
比如这个你打p0和p1是一个效果!
当然,如果在dd下还有这么一个目录,比如bb/cc/text.txt(/home/dd/bb/cc/text.txt),根据优先级,
那你用p1有就打到/home/dd/bb/cc/test.txt上面去了!!切记!
那如何避免呢?
偏移量短的来打补丁,比如这里,你就用p0,即使在dd目录下有home2/aa/bb/cc/text.txt,按照优先级,他也会找到aa/bb/cc/text.txt.
当然对于生成补丁的人来说,尽量在需要比较的文件夹上一层进行打,
打的人把补丁拿过去后用patch -p1即可。免得还要计算!