我想修补整个目录树。虽然diff找到所有差异,但补丁确实将这些应用于相关文件。当我在subdir中更改文件时,我可以看到修补程序包,它上面一层的文件应该在正在修补的目录树中。
我使用命令:
diff -Nur extern/ local/ | patch -d extern
这有什么问题?
答案 0 :(得分:1)
由于您正在传递-d dir (“在执行任何其他操作之前立即更改到目录目录。”)您还需要告诉patch使用-p去除一级目录:
diff -Nur extern/ local/ | patch -d extern -p1
那是因为diff的输出看起来像这样:
+++ extern/foo.x
--- local/foo.x
@@ -21,7 +21,9 @@
- yyy
+ xxx
...所以你需要摆脱路径中的第一个前缀。