diff不适用于子目录

时间:2011-12-10 19:51:51

标签: diff patch

我想修补整个目录树。虽然diff找到所有差异,但补丁确实将这些应用于相关文件。当我在subdir中更改文件时,我可以看到修补程序包,它上面一层的文件应该在正在修补的目录树中。

我使用命令:

diff -Nur extern/ local/ | patch -d extern

这有什么问题?

1 个答案:

答案 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

...所以你需要摆脱路径中的第一个前缀。