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

Как получить патч, чтобы игнорировать возврат каретки?

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

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

4b9b3361

Ответ 1

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

- двоичный

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

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

Ответ 2

Здесь ссылка 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

Ответ 3

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

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

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