diff не работает с подкаталогами - PullRequest
0 голосов
/ 10 декабря 2011

Я хочу исправить все дерево каталогов. Хотя diff находит все различия, patch применяет их к соответствующим файлам. Когда я изменяю файл в подкаталоге, я вижу ящик патча, который на один уровень выше, чем он должен быть в дереве каталогов, к которому идет патч.

Я использую команду:

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

что с этим не так?

1 Ответ

1 голос
/ 11 декабря 2011

Поскольку вы передаете -d dir («Немедленно перейдите в каталог dir, прежде чем делать что-либо еще.»), Вам также нужно указать patch для удаления одного уровня каталогов с помощью -p:

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

Это потому, что вывод diff будет выглядеть примерно так:

+++  extern/foo.x
---  local/foo.x
@@ -21,7 +21,9 @@

- yyy
+ xxx

... поэтому вам нужно избавиться от этого первого префикса в пути.

...