Вопрос

У меня возникли проблемы с применением патча к моему дереву исходного кода, и это необычно. -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/.

Любые поправки и уточнения, конечно, приветствуются.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top