Применение команды patch с использованием файлов в разных каталогах в Linux - PullRequest
1 голос
/ 15 декабря 2010

Я пытаюсь применить патч, используя 2 файла в разных каталогах.Выходной файл также должен находиться в другом каталоге.Первый файл находится в / var / local / documents / document.xml , а файл исправлений находится в / var / local / patches / patch.diff , и я хочу, чтобы выходной файл долженбыть созданным в / var / local / final / final.xml .

Когда файлы находятся в одном каталоге, эта команда работает:

patch document.xml -i patch.diff -o final.xml

Нокогда они находятся в отдельных каталогах, и я пытаюсь использовать следующую команду:

patch /var/local/documents/document.xml -i /var/local/patches/patch.diff -o /var / local / final / final.xml

Я получаю следующую ошибку:

(Stripping trailing CRs from patch.)
patching file {file}
Hunk#1 FAILED at 20.
1 out of 1 hunk FAILED -- saving rejects to file {file}

Я где-то читал, что для правильной работы я должен использовать -d и -pс каталогами, но я понятия не имею, как я должен это сделать ...

Ответы [ 2 ]

5 голосов
/ 15 декабря 2010

Да, это переключатель -p (в вашем случае следует удалить 2 записи из пути исправления):

cd /var/local/documents
patch -p 2 -o ../final/final.xml document.xml < ../patches/patch.diff
1 голос
/ 15 декабря 2010

Попробуйте это:

$ mv /var/local/final/final.xml /var/local/final/document.xml
$ (cd /var/local/final && patch document.xml) < patch.diff
$ mv /var/local/final/document.xml /var/local/final/final.xml
...