Patch
Patch es un programa originalmente escrito por Larry Well em 1984, que sirve para aplicar parches a través de los diff de los archivos.
El programa patch:
- lee original
- lee parche
- verifica diferencias con diff
- las escribe en original
- Si parche necesita llamar a otro archivo, con
-p1va a “avisar” y se detiene el proceso. - Si original necesita llamar a un segundo parche, con
-p1va a “avisar” y se detiene el proceso
(estas opciones admiten escenarios algo más complejos, hay más opciones, esto es lo básico)
Uso
Las siguientes instrucciones son una guía general sobre cómo generar y aplicar parches posteados.
Formato del nombre de fichero del parche
El formato esperado para los parches es:
Para las revisiones de git:
nombreherramienta-nombreparche-AAAAMMDD-HASHCORTO.diffdwm-todasubase-20160617-3465bed.diff
La fecha AAAAMMDD debe corresponder a la última vez que el parche ha sido modificado. Aquí HASHCORTO son los siete caracteres del hash corto del commit de git que corresponden al último commit de la herramienta en la cual el parche puede ser aplicado y funciona correctamente. Puede obtenerlo tomando los primeros siete caracteres del hash completo, o por ejemplo:
git rev-parse --short <commit-id>
…(con commit-id: HEAD, commit hash, etc.)
Para versiones release:
nombreherramienta-nombreparche-RELEASE.diff dwm-todasubase-6.1.diff
El RELEASE debe corresponder a la versión de lanzamiento de la herramienta, por ejemplo 6.1 para dwm-6.1.
generación del diff
Para usuarios de git:
cd directorio-programa git add filechanges... git commit #(redactar una descripción clara del parche) git format-patch --stdout HEAD^ > nombreherramienta-nombreparche-AAAAMMDD-HASHCORTO.diff
Para tarballs:
cd directorio-programa-modificado/.. diff -up directorio-programa-original directorio-programa-modificado > nombreherramienta-nombreparche-RELEASE.diff
No envíe múltiples conjuntos de parches para múltiples commits; un solo parche debe aplicar todos los cambios al usar el comando patch -p1.
Emparchar un programa
Para tarballs
Se usa patch con los diff:
cd directorio-programa patch -p1 < ruta/al/parche.diff
Para [[git]]
Los usuarios de git, deben usar la opción -3 para corregir el conflicto fácilmente:
cd directorio-de-programa git apply ruta/a/parche.diff
Para parches formateados con git format-patch
cd directorio-programa git am ruta/al/parche.diff
Tipos de Patches
Existen dos tipos de parches, los que se adecúan a su gusto personal, y aquellos que piensa que deben incluirse en el troncal principal de desarrollo.
Para los parches que se adecúan a su gusto personal y desea compartir con la comunidad, por favor siga las instrucciones comunitarias.
Para los parches que deben incluirse en el troncal principal de desarrollo (“mainline”), debe consultarse laa página comunitaria y lista de correo.
Por favor provea un mensaje de envío (“commit message”) claro y conciso para sus parches.
