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


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перемикача. Взяті з розрізненої сторінки чоловіка :

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

3

Безпосередня відповідь: diff -Nяк пояснив Pootzko . Ви побачите, що багато патчів там створено diff -urN.

Що може зробити ваше життя кращим: почніть використовувати інструмент контролю версій. Якщо ви нічого не знаєте, почніть з однієї з трьох основних розподілених систем контролю версій , Bazaar , Git або Mercurial . Перевірте чисту версію, працюйте, перевіряйте свою роботу стільки разів, скільки вам потрібно, і запитайте у вашої системи контролю версій, чи існує різниця між чистою версією та вашою роботою.


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