diff
ha un'opzione per ignorare le modifiche agli spazi bianchi (-w
), lo stesso per patch
(-l
). In generale, è una cattiva idea ignorare gli spazi bianchi, quindi dovresti riservarne l'uso a casi speciali, quando l'editore di qualcuno ha fatto qualcosa di orribile...
diff
ha più di un'opzione relativa agli spazi bianchi. Tuttavia, uno è meno utile per le patch. La pagina di manuale fornisce un suggerimento oscuro, riferendosi sia a 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
e 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.
Di solito si usa -b
, perché è meno probabile che trascuri cambiamenti significativi. Se hai cambiato solo il rientro, allora entrambi -b
e -w
dare lo stesso risultato. D'altra parte, se hai inserito spazi dove non ce n'erano, o hai cancellato spazi esistenti (non lasciandone nessuno), questo potrebbe essere un cambiamento nel tuo programma. Ecco un esempio:
$ 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 */
In questo caso, -w
L'opzione ti consente di ignorare la modifica al setlocale
parametro (forse non quello previsto).
POSIX diff, tra l'altro, ha solo -b
opzione.
Per patch
, POSIX documenta il -l
opzione:
-l
(La lettera ell .) Causa qualsiasi sequenza di<blank>
caratteri nello script di differenza per corrispondere a qualsiasi sequenza di<blank>
caratteri nel file di input. Gli altri caratteri devono corrispondere esattamente.