Как мне получить патч, чтобы игнорировать возврат каретки? - PullRequest
22 голосов
/ 13 октября 2011

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

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

Ответы [ 4 ]

9 голосов
/ 07 июня 2012

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

- бинарная

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

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

8 голосов
/ 12 октября 2012

Вот ссылка http://www.chemie.fu -berlin.de / chemnet / use / info / diff / diff_2.html

Опции -w' and - ignore-all-space 'игнорируют разницу, даже если один файл имеет пробел>, где другой файл не имеет ни одного. К пробельным символам относятся символ табуляции, новая строка, вертикальная табуляция,> подача формы, возврат каретки и пробел

Запустите diff как: diff -w file1.txt file2.txt

1 голос
/ 06 июля 2018

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

dos2unix `cat mixed-line-ending.patch | grep Index\: | sed -e 's/Index\://'`
dos2unix mixed-line-ending.patch
patch -p0 < mixed-line-ending.patch
1 голос
/ 02 сентября 2015

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

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

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

...