我使用以下命令生成了两个目录的补丁文件:
diff -ur source-20110125 source > mailpatch3.patch
现在我想应用补丁,执行以下操作:
patch -p1 < mailpatch3.patch
但随后它要求我提供要修补的文件。为什么?
补丁文件中有些东西对我来说很奇怪:有很多“公共子目录”行。像这样:
Common subdirectories: source-20110125/ac_depository and source/ac_depository
Common subdirectories: source-20110125/ac_depository_jar and source/ac_depository_jar
Common subdirectories: source-20110125/_backoffice and source/_backoffice
Common subdirectories: source-20110125/_csvexport and source/_csvexport
Common subdirectories: source-20110125/_foundation and source/_foundation
Common subdirectories: source-20110125/_impex and source/_impex
我真的不知道他们为什么在那里。
补丁的其余部分看起来很正常。
答案1
最有可能的是,你对从路径中修剪前缀的 -p 设置有误。如果在生成补丁时你位于两个源目录下,那么你应该在源目录中使用 -p1 应用补丁。