mitago.net

Página web de Celso González

Como usar subversion para actualizar versiones

Hoy voy a explicar un pequeño truco que nos permite actualizar versiones de alguno de los programas que empleamos, no voy a contar que es Subversion ya que supongo un conocimiento básico de la herramienta.

Vamos con los antecedentes, supongamos que tenemos algún programa, normalmente algún programa en php, python o cualquier otro lenguaje de servidor. Nuestra distribución favorita no tiene empaquetado ese programa, tiene una versión antigua, o el paquete viene demasiado parcheado para nuestro gusto.

En esos casos normalmente vamos a la página del programa (wordpress, typo3...) buscamos la sección downloads y nos bajamos un tar.gz que instalamos descomprimiendo y tal vez modificando algún fichero.

Cambio de versión

En esto que hay un cambio de versión de 1.x a 1.y y es cuando tenemos los problemas. Si tenemos suerte el cambio se puede hacer aplicando un parche, si tenemos conflictos lo resolvemos a mano. Si no tenemos suerte pero hemos sido previsores habremos guardado el tar.gz original que instalamos y gracias a él podremos sacar un parche. Y si no ya nos veo instalando la nueva versión e intentando recordar donde cambiamos algo. Si por un casual habíamos metido todo esto en un sistema de control de versiones tampoco solucionabamos mucho en el caso de que hubiese directorios o ficheros borrados.

Resumiendo que esto lo he sufrido alguna vez y no se lo deseo a nadie.

Subversion al rescate

En esto que buscando en la página de descargas del programa, normalmente en la sección de avanzado descubrimos que hay una forma de descargar el programa mediante svn. Perfecto, hago un checkout del código y voy haciendo actualizaciones, además como subversion es ligeramente inteligente me respetará los cambios propios que haya realizado. Pero...

Siempre hay un pero. Las instrucciones siempre suelen referirse a la version trunk, la versión de desarrollo, y no quiero dejar sin servicio a mis usuarios porque los desarrolladores esten implementando algun cambio drástico o hayan hecho un commit de algo que aun no funciona. Para producción prefiero jugar solamente con las versiones estables

Y aquí es donde aparecen las tags

La estructura recomendada de un repositorio subversion es en tres directorios, trunk para la version de desarrollo, tags para versiones o hitos estables y branches para ramas de desarrollo separadas. Entonces eso de tags suena muy bien para lo que yo quiero. Vamos a verlo con un ejemplo

Vamos con una instalación de wordpress, puedo ir a la página y en descargas voy a ver que aparte del zip y el tar.gz tienen acceso mediante subversion. También podemos ver que recomiendan la clásica maniobra de:

svn co http://svn.automattic.com/wordpress/trunk/ wordpress
cd wordpress
svn up

Pero como la gente de worpress es lista si apuntamos nuestro navegador a http://svn.automattic.com/wordpress/ podemos ver la clásica estructura de branches, tags, trunk. Vamos a ver los tags y podremos ver la lista de tags que han publicado, que en este caso corresponderá a las versiones estables, siendo la última en este momento la 2.7.1

Con esta información vamos a realizar nuestro checkout, para esto lo único que tenemos que hacer es cambiar la ruta ligeramente

svn co http://svn.automattic.com/wordpress/tags/2.7.1/ wordpress

El truco del almendruco, cómo actualizar

Hasta aquí todo va perfecto, tenemos la última versión, podemos hacer cambios y no estamos afectados por los problemas de inestabilidad que pueda tener la rama trunk. Pero un día descubrimos que se ha liberado la versión 2.7.2 que corrige ciertas cosas ¿cómo actualizamos a esa versión? Un update no nos vale hay que hacer un switch

cd wordpress
svn sw http://svn.automattic.com/wordpress-mu/tags/2.7.2/ .

Esto es todo, sólo tenemos que reemplazar el número de versión para que subversion nos cambie de rama y el se encargará de preservar los cambios locales que hayamos realizado. Otro punto a su favor es que podemos saltarnos versiones intermedias, si de repente aparece la versión 2.8 y no hemos actualizado antes la 2.7.2, la 2.7.3, la 2.7.4... da igual, subversion es más listo que todo eso.

Este caso se ha realizado para wordpress, pero es igualmente aplicable a cualquier programa que siga este esquema, así que tal vez merezca la pena que investigues un poco en lo que tienes instalado

mar 19 mayo 2009 19:320 comentarios