Subversion: Como crear y aplicar parches

Publicado el Lunes, 11 de enero de 2010

Mi sistema de control de versiones actual sigue siendo Subversion, a pesar de los más modernos sistemas distribuídos. Por ahora sólo los he probado por arriba. Vengo trabajando con Subversion y estudiándolo hace un par de años, y por ahora estoy contento con él.

Subversion

Subversion

En este post les voy a comentar sobre cómo crear o aplicar un parche al código de un programa bajo control de version con Subversion. En mi caso lo aprendí para aportar código a un proyecto donde no tenía permisos de commit. Generalmente algunos proyectos Open Source / Software Libre tienen una "meritocracia", donde los privilegios se obtienen a fuerza del mérito. Entonces si enviamos varios parches, y participamos activamente del proyecto, eventualmente se logra un lugar como desarrollador en el proyecto. En fin, los parches son una herramienta útil para trabajar con control de versiones.

Crear un parche

Para entender qué es "parchear" un archivo, o aplicar un parche, hay que conocer el programa que generó esto. Se trata de patch, una aplicación de Unix que actualiza un archivo de texto según las instrucciones incluidas en un archivo aparte (el archivo del parche). Este archivo, de texto plano, consiste en una serie de diferencias entre dos archivos, y es creado por una aplicación diff.

En nuestro caso, vamos a usar la herramienta svn diff. Este comando muestra las diferencias entre dos revisiones o rutas. Teniendo una copia del proyecto (generalmente de la rama trunk) en nuestra máquina, podemos ejecutar svn diff. Si hicimos cambios locales, Subversion nos mostrará los cambios en formato diff.

El formato diff es bastante popular, y la mayoría de editores de texto e IDE's lo reconocen, resaltando con colores los cambios. Por defecto, svn diff muestra los cambios en la salida estándar, pero podemos redirigirlo a un archivo:

svn diff > patch.diff

Aplicar un parche

Este archivo puede ser enviado por correo, o a través de un sistema de gestión de bugs (Trac, Bugzilla, etc.) a los autores del código en el que estamos trabajando para que lo revisen. Para aplicar el parche, usamos el comando patch:

patch < patch.diff

Y los cambios se aplican automáticamente a los archivos cambiados.

Un tema a tener en cuenta. Los parches son útiles en casos específicos con cambios triviales o en el código de pocos archivos. Para un uso más avanzado, y aprovechar las capacidades de Subversion como servidor de control de versiones, es recomendable usar svn merge. Esto aplica en otros casos específicos,como cambios a árboles de directorios (agregar, quitar o renombrar archivos y directorios), o propiedades de SVN.

Pero esto es un tema para más adelante, ya seguiré publicando más sobre Subversion...

Un comentario en este post

Feed de comentarios
  1. Buenas prácticas usando Subversion | Consultoría web | 14 julio. 2013 - 05:33

    […] de código, sino de versiones funcionales, por lo que . Si se quiere guardar ese código se puede crear un patch y guardar en […]

Dejar un comentario

Toasty!