diff
tiene una opción para ignorar los cambios de espacios en blanco (-w
), lo mismo para patch
(-l
). Sin embargo, en general, es una mala idea ignorar los espacios en blanco, por lo que debe reservar su uso para casos especiales, cuando el editor de alguien hizo algo horrible...
diff
tiene más de una opción relacionada con los espacios en blanco. Sin embargo, uno es menos útil para los parches. La página del manual da una pista oscura, refiriéndose tanto 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
y 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.
Usualmente uno usa -b
, porque es menos probable que pase por alto cambios significativos. Si ha cambiado solo la sangría, entonces tanto -b
y -w
dar el mismo resultado. Por otro lado, si insertó espacios donde no los había, o eliminó espacios existentes (sin dejar ninguno), eso podría ser un cambio en su programa. Aquí hay un ejemplo:
$ 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 */
En este caso, el -w
La opción le permite ignorar el cambio en el setlocale
parámetro (quizás no sea lo que se pretendía).
POSIX diff, por cierto, solo tiene el -b
opción.
Para patch
, POSIX documenta el -l
opción:
-l
(La letra ell .) Provocar cualquier secuencia de <blank>
caracteres en el script de diferencia para que coincida con cualquier secuencia de <blank>
caracteres en el archivo de entrada. Los demás caracteres deben coincidir exactamente.