Вопрос
У меня возникли проблемы с применением патча к моему дереву исходного кода, и это необычно. -p
проблема со снятием одежды. patch
может найти файл для исправления.
В частности, мой вопрос заключается в том, как читать/интерпретировать .rej
файлы patch
создается, когда происходит сбой на нескольких кусках.Большинство обсуждений patch
/diff
Я видел, не включайте это.
Решение
Простой пример:
$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b
Как вы видете:Старый файл содержит строку 2, а новый файл должен содержать строку b.Однако на самом деле он содержит строку c (она не видна в файле отклонения).
На самом деле, самый простой способ решить такие проблемы — взять фрагмент различий из файла .diff/.patch, вставить его в нужное место файла, который нужно пропатчить, а затем вручную сравнить код, чтобы выяснить, какие строки на самом деле вызывают конфликт.
Или - альтернативно:Получите исходный файл (немодифицированный), исправьте его и запустите трехстороннее слияние файла.
Другие советы
покачиваться — отличный инструмент для применения файлов .rej, если исправление не удалось.
Я не являюсь экспертом в работе с файлами исправлений, но хотел бы внести некоторую ясность в то, как их читать, исходя из моего понимания содержащейся в них информации.
Твой .rej
файлы расскажут вам:
- разница между оригиналом и файлом .rej;
- Где код проблемы начинается в исходном файле, сколько строк он продолжается в этом файле;
- и где код начинается в новом файле и сколько строк он занимает в этом файле.
Итак, учитывая это сообщение, отмеченное в начале моего файла .rej:
diff a/www/js/app.js b/www/js/app.js (rejected hunks)
@@ -4,12 +4,24 @@
Я вижу это для моего проблемного файла (www/js/app
), разница между оригиналом (отмечена как a/www/js/app.js
в первой строке) и файл .rej (обозначенный как b/www/js/
) начинается с четвертой строки оригинала и продолжается 12 строк (часть перед запятой в @@ -4,12, +4,24 @@
во второй строке), начинается с четвертой строки новой версии файла и продолжается 24 строки (часть после запятой в @@ -4,12, +4,24 @@
.
Для получения дополнительной информации см. отличный обзор файлов исправлений (содержащий информацию, которую я отметил выше, а также подробную информацию о добавленных строках и/или между версиями файлов) по адресу http://blog.humphd.org/vocamus-906/.
Любые поправки и уточнения, конечно, приветствуются.