diff
a une option pour ignorer les changements d'espace (-w
), idem pour patch
(-l
). En général, c'est une mauvaise idée d'ignorer les espaces, vous devez donc réserver leur utilisation à des cas particuliers, lorsque l'éditeur de quelqu'un a fait quelque chose d'horrible...
diff
a plus d'une option liée aux espaces blancs. Cependant, on est moins utile pour les patchs. La page de manuel donne un indice obscur, se référant à la fois à 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
et 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.
Habituellement, on utilise -b
, car cela est moins susceptible de négliger des changements importants. Si vous avez modifié uniquement l'indentation, alors les deux -b
et -w
donner le même résultat. D'autre part, si vous avez inséré des espaces là où il n'y en avait pas, ou supprimé des espaces existants (en n'en laissant aucun), cela pourrait être un changement dans votre programme. Voici un exemple :
$ 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 */
Dans ce cas, le -w
l'option permet d'ignorer la modification du setlocale
paramètre (peut-être pas ce qui était prévu).
POSIX diff, soit dit en passant, n'a que le -b
option.
Pour patch
, POSIX documente le -l
choix :
-l
(La lettre ell .) Cause toute séquence de<blank>
caractères dans le script de différence pour correspondre à n'importe quelle séquence de<blank>
caractères dans le fichier d'entrée. Les autres caractères doivent correspondre exactement.