GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un patch en ignorant les différences d'indentation dans le code ?

diff a une option pour ignorer les changements d'espace (-w ), idem pour patch (-l ). En général, c'est une mauvaise idée d'ignorer les espaces, vous devez donc réserver leur utilisation à des cas particuliers, lorsque l'éditeur de quelqu'un a fait quelque chose d'horrible...


diff a plus d'une option liée aux espaces blancs. Cependant, on est moins utile pour les patchs. La page de manuel donne un indice obscur, se référant à la fois à 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

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

Habituellement, on utilise -b , car cela est moins susceptible de négliger des changements importants. Si vous avez modifié uniquement l'indentation, alors les deux -b et -w donner le même résultat. D'autre part, si vous avez inséré des espaces là où il n'y en avait pas, ou supprimé des espaces existants (en n'en laissant aucun), cela pourrait être un changement dans votre programme. Voici un exemple :

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

Dans ce cas, le -w l'option permet d'ignorer la modification du setlocale paramètre (peut-être pas ce qui était prévu).

POSIX diff, soit dit en passant, n'a que le -b option.

Pour patch , POSIX documente le -l choix :

-l
(La lettre ell .) Cause toute séquence de <blank> caractères dans le script de différence pour correspondre à n'importe quelle séquence de <blank> caractères dans le fichier d'entrée. Les autres caractères doivent correspondre exactement.


Linux
  1. Comment installer l'éditeur de code Brackets sur Ubuntu 20.04

  2. Linux - Comment créer un patch en ignorant les différences d'indentation dans le code ?

  3. Comment ignorer certaines différences dans la commande diff ?

  4. Comment puis-je exécuter du code PHP à partir de la ligne de commande ?

  5. Comment ajouter la fonction d'interrogation au code du module du noyau ?

Comment installer l'éditeur de code Brackets sur Ubuntu 20.04

Comment créer et configurer VirtualHost sur le serveur OpenLiteSpeed

Comment créer une boîte de message à partir de la ligne de commande ?

Comment créer des lanceurs sur le bureau ?

Comment créer un compte de messagerie depuis le cPanel ?

Comment créer un modèle de projet dans l'outil de gestion de projet ONLYOFFICE