GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erstelle ich einen Patch, der Einrückungsunterschiede im Code ignoriert?

diff hat eine Option zum Ignorieren von Whitespace-Änderungen (-w ), dasselbe für patch (-l ). Im Allgemeinen ist es jedoch eine schlechte Idee, Leerzeichen zu ignorieren, also sollten Sie ihre Verwendung für Sonderfälle reservieren, wenn jemandes Redakteur etwas Schreckliches getan hat...


diff hat mehr als eine Option in Bezug auf Leerzeichen. Allerdings ist man für Patches weniger brauchbar. Die Handbuchseite gibt einen obskuren Hinweis, der sich sowohl auf GNU:

bezieht
   -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

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

Normalerweise verwendet man -b , da dadurch signifikante Änderungen weniger wahrscheinlich übersehen werden. Wenn Sie nur den Einzug geändert haben, dann beide -b und -w geben das gleiche Ergebnis. Wenn Sie andererseits Leerzeichen eingefügt haben, wo keine vorhanden waren, oder vorhandene Leerzeichen gelöscht haben (wobei keine vorhanden waren), könnte dies eine Änderung in Ihrem Programm sein. Hier ist ein Beispiel:

$ 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 diesem Fall die -w Mit der Option können Sie die Änderung des setlocale ignorieren Parameter (vielleicht nicht beabsichtigt).

POSIX diff hat übrigens nur den -b Option.

Für patch , POSIX dokumentiert den -l Möglichkeit:

-l
(Der Buchstabe ell .) Verursachen Sie eine beliebige Folge von <blank> Zeichen im Differenzskript so, dass sie mit einer beliebigen Folge von <blank> übereinstimmen Zeichen in der Eingabedatei. Andere Zeichen müssen exakt abgeglichen werden.


Linux
  1. So installieren Sie den Brackets-Code-Editor unter Ubuntu 20.04

  2. Linux – Wie erstelle ich einen Patch, der Einrückungsunterschiede im Code ignoriert?

  3. Wie lese ich den Quellcode von Shell-Befehlen?

  4. Wie füge ich dem Kernel-Modulcode eine Abfragefunktion hinzu?

  5. Wie erstelle ich ein Ansible-Playbook, um Betriebssystemversionen der Remote-Hosts zu erhalten?

So installieren Sie den Brackets-Code-Editor unter Ubuntu 20.04

So erstellen und konfigurieren Sie VirtualHost für den OpenLiteSpeed-Server

Wie erstelle ich ein Meldungsfeld von der Befehlszeile aus?

Wie erstelle ich Launcher auf dem Desktop?

Wie erstelle ich ein E-Mail-Konto über das cPanel?

So erstellen Sie eine Projektvorlage im ONLYOFFICE-Projektmanagement-Tool