Ich versuche, einen Patch auf eine Datei mit Windows-Zeilenenden auf einem Linux-System anzuwenden, und es treten aufgrund der Zeilenumbrüche in der Datei Konflikte auf.
Die Option -l
(Leerzeichen ignorieren) ignoriert die EOL-Zeichen nicht. Gibt es irgendwie Patch zu bekommen, um Windows-Stil Linienenden zu ignorieren?
Versuchen Sie es mit der Option --binary auf der Hilfeseite (Hervorhebung von mir).
--binär
Schreiben Sie alle Dateien im Binärmodus, mit Ausnahme der Standardausgabe und/dev/tty. Deaktivieren Sie beim Lesen die Heuristik zum Umwandeln von CRLF-Zeilenenden in LF-Zeilenenden. (Auf POSIX-konformen Systemen transformieren Lese- und Schreibvorgänge niemals Zeilenenden. Unter Windows transformieren Lese- und Schreibvorgänge standardmäßig Zeilenenden, und Patches sollten von diff --binary generiert werden, wenn Zeilenenden von Bedeutung sind.)
Ich verstehe das Obige nicht ganz, aber auf einem Linux-Computer funktionierte es, einen Unix-Patch auf eine DOS-Datei anzuwenden.
Hier ist ein Link http://www.chemie.fu-berlin.de/chemnet/use/info/diff/diff_2.html
Die
-w' and
-- ignore-all-space'-Optionen ignorieren den Unterschied, auch wenn eine Datei Leerzeichen> enthält, während die andere Datei keine hat. Leerzeichen sind Tabulator, Zeilenvorschub, vertikaler Tabulator,> Formularvorschub, Wagenrücklauf und Leerzeichen
Führen Sie diff wie folgt aus: diff -w file1.txt file2.txt
Ich hatte dieses Problem mit einem Diff, das manuell von der git diff
-Konsolenausgabe in eine Patchdatei mit LFs kopiert und eingefügt wurde. Um diese Patch-Datei wieder zum Laufen zu bringen - um sie auf die tatsächlichen Dateien anzuwenden, die CRs und LFs verwendeten - mussten einige Dinge manuell ausgeführt werden:
Die Syntaxhervorhebung für joe
war dort sehr hilfreich, da sie Hunks richtig färbte, sobald ich sie reparierte.
Ich arbeite daran mit den folgenden Befehlen, um alle Dateien von Interesse in Unix-Zeilenenden zu konvertieren.
dos2unix `cat mixed-line-ending.patch | grep Index\: | sed -e 's/Index\://'`
dos2unix mixed-line-ending.patch
patch -p0 < mixed-line-ending.patch