как включить новый файл в патч


9

Я пытаюсь сделать патч, как представлено здесь .
Скажем, у меня есть две директории pp1(modified version)и pp0(clean version)я создаю файл патча pp0.patchс помощью diffкоманды:

 diff -crB pp0 pp1 > pp0.patch

Проблема в том, что если файл есть только в pp1, он не будет включен в патч. Как обойти это?

ОБНОВЛЕНИЕ :
я сначала перехожу в каталог pp0 и проверяю, будет ли исправление успешным

  patch --dry-run -p1 -i /path-to-pp0.patch

Хотя я добавил --new-fileк diffкоманде, те, кто только в pp1, не перечислены в результате

ОБНОВЛЕНИЕ :
я случайно исправил неправильный файл, так

  diff -crb --new-file pp1 pp0 > pp0.patch

или

  diff -crNb pp1 pp0 > pp0.patch

Сделаю

Ответы:


9

Вы должны быть в состоянии сделать это, используя --new-fileпереключатель. Взято из справочной страницы diff :

 --new-file
          In directory comparison, if a file is found in only  one  direc-
          tory, treat it as present but empty in the other directory.

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

diff -crB --new-file pp0 pp1 > pp0.patch

Я не знаю, правильно ли я его исправил, но новый файл не включен
manuzhang

мои извинения, что работает
manuzhang

3

Немедленный ответ: diff -Nкак объяснил поотцко . Вы обнаружите, что многие патчи созданы diff -urN.

Что может сделать вашу жизнь лучше: начните использовать инструмент контроля версий. Если вы ничего не знаете, начните с одной из трех основных распределенных систем контроля версий: Bazaar , Git или Mercurial . Проверяйте чистую версию, работайте, проверяйте свою работу столько раз, сколько захотите, и попросите свою систему управления версиями провести различие между чистой версией и вашей работой.


спасибо, что я мог бы иметь один в реальной жизни и вернуться в прошлое, когда ошибся :)
manuzhang
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.