Подтвердить что ты не робот

Как читать .rej файлы, т.е.

У меня возникли проблемы с применением патча к исходному дереву, и это не обычная проблема удаления -p. patch может найти файл для исправления.

В частности, мой вопрос заключается в том, как читать/интерпретировать .rej файлы patch создает, когда он терпит неудачу на нескольких кусках. Большинство обсуждений patch/diff Я не видел этого.

4b9b3361

Ответ 1

Простой пример:

$ 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 из файла .diff/.patch, вставить его в нужное место в файле, который будет исправлен, а затем сравнить код вручную, чтобы выяснить, какие строки действительно вызывают конфликт.

Или - альтернативно: получить исходный файл (немодифицированный), исправить его и запустить трехстороннее слияние в файле.

Ответ 2

Wiggle - отличный инструмент для применения файлов .rej, когда патч не удался.

Ответ 3

Я не специалист по работе с файлами патчей, но я хотел бы добавить некоторую ясность в том, как читать их, основываясь на моем понимании информации, которую они содержат.

Ваши файлы .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/) начинается в строке 4 оригинал и продолжается 12 строк (часть перед запятой в @@ -4,12, +4,24 @@ в строке 2) и начинается в строке 4 новой версии файла и продолжается 24 строки (часть после запятой в @@ -4,12, +4,24 @@.

Для получения дополнительной информации см. отличный обзор файлов патчей (содержащий информацию, которую я отмечаю выше, а также сведения о добавленных строках и/или между версиями файлов) в http://blog.humphd.org/vocamus-906/.

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