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.