Я пытаюсь применить патч здесь, я сохраняю его как xLoader.patch
Он изменяет более одного файла и просто не будет плавно переходить из базового каталога, я использую приведенную ниже команду и получаю кучу ошибок об ошибках, как я могу это правильно сделать? Есть ли способ разбить файл на сегменты, которые обрабатывают каждый файл независимо?
patch -p1 —dry-run -i xLoader.patch
Ошибки:
x-loader$ patch -p1 --dry-run -i xLoader-512_patch.txt
patching file board/omap3beagle/omap3beagle.c
Hunk #1 succeeded at 310 (offset 45 lines).
Hunk #2 FAILED at 305.
1 out of 2 hunks FAILED -- saving rejects to file board/omap3beagle/omap3beagle.c.rej
patching file drivers/k9f1g08r0a.c
Hunk #1 succeeded at 221 (offset 67 lines).
Hunk #2 FAILED at 185.
1 out of 2 hunks FAILED -- saving rejects to file drivers/k9f1g08r0a.c.rej
patching file include/asm/arch-omap3/mem.h
Hunk #2 FAILED at 72.
Hunk #3 succeeded at 305 (offset 52 lines).
Hunk #4 succeeded at 364 (offset 52 lines).
1 out of 4 hunks FAILED -- saving rejects to file include/asm/arch-omap3/mem.h.rej
Если это все, что вам нужно, то да, есть возможность разбить его на сегмент для каждого файла, который он исправляет. Просто разделите его на ---
/+++
строки заголовка. Каждый из этих сегментов прекрасно работает как отдельный файл патча.
Если вы используете git и обращаетесь к рабочему каталогу git, вы можете использовать git-apply вместо patch.
Похоже, ваш патч просто не применяется. Нет реальной необходимости применять его только к одному файлу за раз, он будет применяться к файлам, к которым он применяется, и сохранять отклонения для файлов, которые потерпели неудачу.
Вы можете разбить его на части, если хотите, каждый отдельный файл начинается со строки с командой diff.
Если вы используете патч GNU, есть опция «-U», которая позволяет сохранить отклоненные файлы в унифицированном diff вместо обычного diff. Если вы привыкли читать унифицированные различия, это значительно облегчит вашу жизнь, когда придет время вручную применять отклоненные фрагменты.
Другим вариантом является создание различных веток git, к которым патч применяется аккуратно, а с другими изменениями, которые делают его неприменимым. Затем объедините ветку с патчем, примененным к вашему собственному патчу. Это, вероятно, даст вам конфликты слияния в стиле diff3 вместо файлов .rej.