stringtranslate.com

parche (Unix)

La herramienta informática patch es un programa de Unix que actualiza archivos de texto según las instrucciones contenidas en un archivo independiente, llamado archivo de parche . El archivo de parche (también llamado parche para abreviar) es un archivo de texto que consta de una lista de diferencias y se genera ejecutando el programa diff relacionado con el archivo original y actualizado como argumentos. La actualización de archivos con parche se suele denominar aplicación del parche o simplemente parchear los archivos.

Historia

El programa de parche original fue escrito por Larry Wall (quien luego creó el lenguaje de programación Perl ) y publicado en [1] (que luego se convirtió en ) en mayo de 1985.mod.sourcescomp.sources.unix

Se agregó un parche a XPG4, que luego se convirtió en POSIX . [2] El código de Wall sigue siendo la base de los programas de "parche" proporcionados en OpenBSD , [3] FreeBSD , [4] y schilytools. [5] [ dudosodiscutir ] Se dice que la Open Software Foundation , que se fusionó con The Open Group , mantuvo una versión derivada. [ dudosodiscutir ]

El proyecto GNU / FSF mantiene su propio parche, derivado de la versión de Larry Wall. El repositorio es diferente al de GNU diffutils, pero la documentación se gestiona de forma conjunta. [6]

Contexto de uso

Desarrollado por un programador para otros programadores, el parche se utilizaba con frecuencia para actualizar el código fuente a una versión más reciente. Debido a esto, muchas personas comenzaron a asociar los parches con el código fuente, mientras que los parches, de hecho, se pueden aplicar a cualquier texto. Los archivos parcheados no acumulan ningún texto innecesario, que es lo que algunas personas perciben según el significado en inglés de la palabra; el parche es tan capaz de eliminar texto como de agregarlo.

Los parches descritos aquí no deben confundirse con los parches binarios , que, aunque pueden ser conceptualmente similares, se distribuyen para actualizar los archivos binarios que componen el programa a una nueva versión.

Parches en el desarrollo de software

Los archivos diff que sirven como entrada para el parche son archivos de texto legibles, lo que significa que pueden ser revisados ​​o modificados fácilmente por humanos antes de su uso.

Además del programa " diff ", otros programas también pueden generar diferencias, como Subversion , CVS , RCS , Mercurial y Git .

Los parches han sido un componente crucial de muchos sistemas de control de código fuente , incluido CVS .

Diferencias avanzadas

Cuando se utilizan diffs más avanzados, los parches se pueden aplicar incluso a archivos que se han modificado mientras tanto, siempre que esas modificaciones no interfieran con el parche. Esto se logra utilizando " diffs de contexto " y " diffs unificados " (también conocidos como "unidiffs"), que rodean cada cambio con contexto , que es el texto inmediatamente antes y después de la parte modificada. Patch puede entonces utilizar este contexto para localizar la región a ser parcheada incluso si ha sido desplazada por cambios anteriores en el archivo, utilizando los números de línea en los diffs como punto de partida. Debido a esta propiedad, el contexto y los diffs unificados son la forma preferida de parches para enviar a muchos proyectos de software.

Las características mencionadas anteriormente hacen que diff y patch sean especialmente populares para intercambiar modificaciones en software de código abierto . Los usuarios externos pueden descargar el último código fuente disponible públicamente, realizar modificaciones en él y enviarlas, en formato diff, al equipo de desarrollo. Al utilizar diffs, el equipo de desarrollo tiene la capacidad de revisar eficazmente los parches antes de aplicarlos y puede aplicarlos a una base de código más nueva que la que tenía acceso el desarrollador externo.

Ejemplos de uso

Para crear un parche, se podría ejecutar el siguiente comando en un shell:

$ diff  -u  oldFile  newFile  >  mods.diff # -u le dice a diff que genere un formato diff unificado 

Para aplicar un parche, se podría ejecutar el siguiente comando en un shell:

$ parche  <  mods.diff

Esto le indica al parche que aplique los cambios a los archivos especificados que se describen en mods.diff. Los parches a los archivos en subdirectorios requieren la opción adicional, donde el número es 1 si el directorio base del árbol de origen está incluido en la diferencia y 0 en caso contrario.-pnumber

Los parches se pueden deshacer o revertir con la -Ropción ' ':

$ parche  -R  <  mods.diff

En algunos casos, cuando el archivo no es idéntico a la versión con la que se generó la diferencia, el parche no podrá aplicarse correctamente. Por ejemplo, si se insertan líneas de texto al principio, los números de línea a los que se hace referencia en el parche serán incorrectos. El parche puede recuperarse de esto, observando las líneas cercanas para reubicar el texto que se va a parchear. También se recuperará cuando se alteren las líneas de contexto (para contexto y diferencias unificadas); esto se describe como fuzz .

Puertos de parche

Patch fue escrito originalmente para sistemas Unix y similares , pero también se ha adaptado a Windows y a muchas otras plataformas. GnuWin32 y UnxUtils proporcionan versiones de patch para Windows .

Un patchcomando también es parte de las herramientas MSX-DOS2 de ASCII para MSX-DOS versión 2. [7]

Véase también

Referencias

  1. ^ Wall, Larry (8 de mayo de 1985). «versión de parche 1.3». Grupo de noticias : mod.sources. Archivado desde el original el 4 de abril de 2023. Consultado el 14 de julio de 2024 .
  2. ^ patch  – Referencia de shell y utilidades, La especificación única de UNIX , versión 4 de The Open Group
  3. ^ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ Archivado el 7 de junio de 2017 en Wayback Machine Fuente del parche de OpenBSD
  4. ^ FreeBSD  – Referencia de shell y utilidades, La especificación única de UNIX , versión 4 de The Open Group
  5. ^ "Herramientas de Schily".
  6. ^ "Patch.c\SRC - patch.git - parche GNU".
  7. ^ Manual del usuario de herramientas MSX-DOS2 de ASCII Corporation

Enlaces externos