LinuxシステムでWindowsの行末のあるファイルにパッチを適用しようとしていますが、ファイルの改行が原因で競合が発生しています。
-l
オプション(空白を無視)はEOL文字を無視しません。 ウィンドウスタイルの行末を無視するパッチを取得する方法はありますか?
マンページから--binaryオプションを使用してみてください(私の強調)
- バイナリ
標準出力と/ dev/ttyを除いて、すべてのファイルをバイナリモードで書き込みます。 読み取り時に、CRLF行末をLF行末に変換するためのヒューリスティックを無効にします。(POSIX準拠のシステムでは、読み取りと書き込みは行末を変換しません。Windowsでは、読み取りと書き込みはデフォルトで行末を変換します。行末が重要な場合は、diff --binaryによってパッチを生成する必要があります。)
私は上記を完全には理解していませんが、LinuxマシンでUnixパッチをDOSファイルに適用することは私にとってはうまくいきました。
ここにリンクがあります http://www.chemie.fu-berlin.de/chemnet/use/info/diff/diff_2.html
-w' and
-- ignore-all-space 'オプションは、一方のファイルに空白があり、もう一方のファイルに空白がない場合でも、違いを無視します。空白文字には、タブ、改行、垂直タブ、>フォームフィード、キャリッジリターン、スペースが含まれます
次のように差分を実行します:diff -w file1.txt file2.txt
次のコマンドを使用してこれを回避し、対象のすべてのファイルをUNIXの行末に変換します。
dos2unix `cat mixed-line-ending.patch | grep Index\: | sed -e 's/Index\://'`
dos2unix mixed-line-ending.patch
patch -p0 < mixed-line-ending.patch
git diff
コンソール出力から手動でコピーしてLFを含むパッチファイルに貼り付けた差分でこの問題が発生しました。そのパッチファイルを再び機能させるには(CRとLFを使用していた実際のファイルに適用できるようにするため)、いくつかのことを手動で行う必要がありました。
joe
構文の強調表示は、ハンクを修正するとすぐに適切に色付けされるため、非常に役立ちました。