Я новичок в Linux и Bash, поэтому извините, если мой вопрос будет глупым, но у меня проблема с созданием и применением файла патча.
Допустим, у меня есть два каталога original / и new / , а в исходном каталоге есть несколько файлов, таких как 4 или 5, которые либо полностью отсутствуют в new / или изменены, и некоторые из них находятся в некоторых подкаталогах.
В соответствии с некоторыми уроками я должен использовать diff -rubN original/ new/ > patch.diff
, но в других уроках утверждается обратное: diff -rubN new/ original/ > patch.diff
В любом случае, если я использую первый, а затем запускаю patch -t -p0 < patch.diff
, происходит странная вещь, я получаю результаты "исправления файла оригинала / подпапки / имени файла" для всех файлов, а затем папка оригинала / исчезает, Папка new / все еще пуста, и мне нужно снова запустить команду исправления. Когда я получаю сообщения «Следующий патч удалит файл new / subfolder / filename, который не существует!» - после этого в папке new / есть файлы, что нормально, но я не знаю:
- почему была удалена папка original /
- почему мне нужно дважды запустить команду исправления, чтобы получить файлы в папку new /
- почему патч дает мне сообщение о том, что файл не существует, когда они есть?
Редактировать: если это не ясно из текста, я пытаюсь перенести изменения, которые находятся в файлах в папке original / , в папку new / . Кажется, что второй diff (diff -rubN new/ original/ > patch.diff
) работает для этого случая и только для одного файла, как и должно ... но как только diff будет более чем для одного файла, например, если я добавлю новый файл в * 1041 Папка * original / , которой нет в папке new / , патч заканчивается таким странным образом, удаляя файл, который не находится в папке new / , и печатая сообщение что "Следующий патч создаст файл ../path к исходному файлу / .., который уже существует!" и "исправление файла ../path к исходному файлу"
Также одно новое наблюдение, после первого патча, рекомендующего только файлы, которых нет в папке new / , похоже, удаляется из папки original /
Edit2: Хорошо, просто узнайте, что если я использую cd new/; patch -p1 < ../patch.diff
, патч заканчивается ОК, а папка original / не удаляется. Я просто не понял, почему , потому что мне кажется, что это не тот же самый код -> p0 из каталога, где папки / original и / new - это OR p1 из каталога / new .... Я не вижу разницы