whitespace patch carriage-return eol

whitespace - ¿Cómo consigo un parche para ignorar los retornos de carro?



patch carriage-return (4)

Estoy intentando aplicar un parche a un archivo con los finales de línea de Windows en un sistema Linux y estoy teniendo conflictos debido a los retornos de carro en el archivo.

La opción -l (ignorar espacios en blanco) no ignora los caracteres EOL. ¿Hay alguna forma de obtener un parche para ignorar los finales de línea del estilo de Windows?


Aquí hay un enlace http://www.chemie.fu-berlin.de/chemnet/use/info/diff/diff_2.html

Las opciones -w'' and --ignore-all-space'' ignoran la diferencia incluso si un archivo tiene espacios en blanco> donde el otro archivo no tiene ninguna. Los caracteres de espacio en blanco incluyen tabulación, nueva línea, tabulación vertical,> avance de página, retorno de carro y espacio

Ejecute diff como: diff -w file1.txt file2.txt


Intente usar la opción --binary, desde la página del manual (énfasis mío)

--binario

Escriba todos los archivos en modo binario, excepto para la salida estándar y / dev / tty. Al leer, desactive la heurística para transformar los finales de línea CRLF en finales de línea LF. (En los sistemas que cumplen con POSIX, las lecturas y escrituras nunca transforman los finales de línea. En Windows, las lecturas y escrituras transforman los finales de línea de manera predeterminada, y los parches deben generarse mediante diff --binary cuando los finales de línea son significativos).

No entiendo completamente lo anterior, pero me funcionó en una máquina Linux para aplicar un parche de Unix en un archivo DOS.


Trabajo alrededor de esto usando los siguientes comandos para convertir todos los archivos de interés a finales de línea de Unix.

dos2unix `cat mixed-line-ending.patch | grep Index/: | sed -e ''s/Index/://''` dos2unix mixed-line-ending.patch patch -p0 < mixed-line-ending.patch


Tuve este problema con un diff que se copió y pegó manualmente desde la salida de la consola de git diff , a un archivo de parche con LFs. Para que el archivo de parche vuelva a funcionar, para poder aplicarse a los archivos reales que usaban CR y LF, varias cosas tenían que hacerse manualmente:

  • Encuentra todos los casos de "^ M" y suéltalos.
  • agregue CR a todas las líneas dentro de los hunks, pero no a las líneas de metadatos (@@ etc)
  • en todas las líneas dentro de trozos que estaban vacías, agregue el espacio faltante en la primera columna

joe resaltado de sintaxis de joe fue muy útil allí, porque coloreaba correctamente a los tíos tan pronto como los fijé.