GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit opravu ignorující rozdíly v odsazení v kódu?

diff má možnost ignorovat změny mezer (-w ), totéž pro patch (-l ). Obecně je ale špatný nápad ignorovat mezery, takže byste si jejich použití měli vyhradit pro speciální případy, kdy něčí editor udělal něco hrozného...


diff má více než jednu možnost související s mezerami. Jeden je však méně užitečný pro záplaty. Manuálová stránka poskytuje nejasnou nápovědu, která se týká obou 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

a 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.

Obvykle se používá -b , protože je méně pravděpodobné, že přehlédnete významné změny. Pokud jste změnili pouze odsazení, pak obě -b a -w dát stejný výsledek. Na druhou stranu, pokud jste vložili mezery tam, kde žádné nebyly, nebo smazali existující mezery (nenechali žádné), může to být změna ve vašem programu. Zde je příklad:

$ 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 */

V tomto případě -w volba umožňuje ignorovat změnu na setlocale parametr (možná ne to, co bylo zamýšleno).

POSIX diff, mimochodem, má pouze -b možnost.

Pro patch , POSIX dokumentuje -l možnost:

-l
(Písmeno ell .) Způsobí libovolnou sekvenci <blank> znaky v rozdílovém skriptu, aby odpovídaly jakékoli sekvenci <blank> znaků ve vstupním souboru. Ostatní znaky musí odpovídat přesně.


Linux
  1. Jak vytvořit databázi v MySQL pomocí příkazového řádku

  2. Linux – jak vytvořit záplatu ignorující rozdíly v odsazení v kódu?

  3. Jak ignorovat některé rozdíly v příkazu diff?

  1. Jak mohu spustit kód PHP z příkazového řádku?

  2. Jak načtu zdrojový kód příkazů shellu?

  3. Jak přidat funkci dotazování do kódu modulu jádra?

  1. Jak vytvořit alias a používat příkaz Alias ​​v Linuxu

  2. Jak nainstalovat editor kódu závorek na Ubuntu 20.04

  3. Jak změnit písmo uživatelského rozhraní Visual Studio Code?