GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo crear un parche ignorando las diferencias de sangría en el código?

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.


Linux
  1. Cómo crear una base de datos en MySQL usando la línea de comandos

  2. ¿Cómo ignorar algunas diferencias en el comando diff?

  3. ¿Cómo puedo ejecutar código PHP desde la línea de comandos?

  4. ¿Cómo agregar la función de encuesta al código del módulo del kernel?

  5. ¿Cómo crear el libro de jugadas de Ansible para obtener versiones del sistema operativo de los hosts remotos?

Cómo instalar el editor de código de corchetes en Ubuntu 20.04

Cómo crear y configurar VirtualHost para el servidor OpenLiteSpeed

¿Cómo crear un cuadro de mensaje desde la línea de comandos?

¿Cómo crear lanzadores en el escritorio?

¿Cómo crear una cuenta de correo electrónico desde cPanel?

Cómo crear una plantilla de proyecto en la herramienta de gestión de proyectos ONLYOFFICE