diff
tem mais de uma opção relacionada ao espaço em branco. No entanto, um é menos útil para patches. A página de manual dá uma dica obscura, referindo-se ao 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.
Normalmente, um usa -b
, porque é menos provável que ignore mudanças significativas. Se você alterou apenas o recuo, os dois -b
e -w
fornecerão o mesmo resultado. Por outro lado, se você inseriu espaços onde não havia nenhum, ou excluiu espaços existentes (não deixando nenhum), isso pode ser uma alteração no seu programa. Aqui está um exemplo:
$ 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 */
Nesse caso, a opção -w
permite ignorar a alteração no parâmetro setlocale
(talvez não seja o que se pretendia).
diff do POSIX , a propósito, tem apenas a opção -b
.
Para patch
, POSIX documenta a opção -l
:
-l
(The letter ell.) Cause any sequence of<blank>
characters in the difference script to match any sequence of<blank>
characters in the input file. Other characters shall be matched exactly.