Как заставить патч игнорировать возврат каретки?

Я пытаюсь применить патч к файлу с окончанием строки Windows в системе Linux, и у меня возникают конфликты из-за возврата каретки в файле .

Параметр -l (игнорировать пробелы) не игнорирует символы EOL. Есть ли способ заставить патч игнорировать окончания строк в стиле Windows?

23
задан James McMahon 13 October 2011 в 13:37
поделиться

2 ответа

Попробуйте использовать параметр --binary, из man-страницы (выделено мной)

- binary

Записать все файлы в двоичном режиме, кроме стандартного вывода и / dev / TTY. При чтении отключите эвристику для преобразования концов строки CRLF в окончания строк LF. (В POSIX-совместимых системах чтение и запись никогда не преобразуют окончания строк. В Windows чтение и запись по умолчанию преобразуют окончания строк, а исправления должны генерироваться diff --binary, когда окончания строк значимы.)

Я не совсем понимаю вышесказанное, но у меня на компьютере с Linux работало применение патча Unix к файлу DOS.

10
ответ дан 29 November 2019 в 02:57
поделиться

У меня была эта проблема с diff, который был вручную скопирован и вставлен из консольного вывода git diff, в файл патча с LF. Чтобы этот файл исправления снова заработал - чтобы его можно было применить к фактическим файлам, которые использовали CR и LF - нужно было сделать несколько вещей вручную:

  • найти все экземпляры "^ M "и отбросьте их
  • добавьте CR ко всем строкам внутри фрагментов, но не к строкам метаформатов (@@ и т. д.)
  • на всех пустых строках внутри фрагментов, добавьте недостающее пространство в Подсветка синтаксиса в первом столбце

joe была очень полезна, потому что она исправляла цвета как только я их исправил.

1
ответ дан 29 November 2019 в 02:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: