diff
空白の変更を無視するオプションがあります (-w
)、patch
も同じ (-l
)。ただし、一般的に、空白を無視するのは悪い考えです。そのため、誰かの編集者が恐ろしいことをしたときなど、特別な場合に使用するようにしてください...
diff
空白に関連する複数のオプションがあります。ただし、パッチにはあまり役に立ちません。マニュアルページは、GNU の両方を参照して、あいまいなヒントを提供します:
-B, --ignore-blank-lines
ignore changes where lines are all blank
-b, --ignore-space-change
ignore changes in the amount of white space
-w, --ignore-all-space
ignore all white space
と FreeBSD
-b Ignore changes in amount of white space.
-B Ignore changes that just insert or delete blank lines.
-w Ignore white space when comparing lines.
通常は -b
を使用します 、重要な変更を見逃す可能性が低いためです。インデントのみを変更した場合、両方の -b
と -w
同じ結果が得られます。一方、スペースがない場所にスペースを挿入したり、既存のスペースを削除 (何も残さない) した場合は、プログラムが変更される可能性があります。以下に例を示します:
$ diff foo.c foo2.c
4c4
< setlocale(LC_ALL, "");
---
> setlocale(LC_ALL, " ");
6,7c6,7
< printw("\U0001F0A1");
< getch();
---
> printw ("\U0001F0A1");
> getch(); /* comment */
$ diff -b foo.c foo2.c
4c4
< setlocale(LC_ALL, "");
---
> setlocale(LC_ALL, " ");
6,7c6,7
< printw("\U0001F0A1");
< getch();
---
> printw ("\U0001F0A1");
> getch(); /* comment */
$ diff -w foo.c foo2.c
7c7
< getch();
---
> getch(); /* comment */
この場合、 -w
オプションを使用すると、setlocale
への変更を無視できます パラメータ (意図したものではない可能性があります)。
ちなみに、POSIX diff には -b
しかありません オプション。
patch
の場合 、POSIX ドキュメント -l
オプション:
-l
(文字 ell .) <blank>
の任意のシーケンスを引き起こします <blank>
の任意のシーケンスに一致する差分スクリプト内の文字 入力ファイルの文字。他の文字は完全に一致する必要があります。