jueves, 1 de noviembre de 2012

Script Bash para sincronizar cambios entre repositorios SVN

Creo que es algo bastente común, cuando se está trabajando con distintas versiones del mismo producto, tener que sincronizar cambios de una versión a otra.

En particular en Artech tenemos el código en un repositorio SVN, y en este momento tengo cuatro versiones del cliente de iOS en las que estoy trabajando:
  • la versión prácticamente cerrada del Upgrade 2 de la Evolution 2
  • la rama de upgrades (Upgrade 3 y posteriores) de la Evolution 2
  • la versión oficial de Tilo (nombre código de la próxima versión de GeneXus)
  •  una versión inestable de Tilo donde estoy haciendo cambios que no quiero hacer commit porque están "atados con alambre"
Llevar los cambios de una versión a otra puede ser bastante complicado, si se trata de un fuente que tiene cambios en más de una versión. Es un proceso bastante manual.

Para facilitar este proceso hice un script Bash que se fija los cambios en la versión de origen y muestra el comparador (File Merge, viene con Xcode) para los archivos modificados, o copia directamente los archivos que son nuevos.

Estoy en fase de beta-test... para las primeras comparaciones que hice me funcionó.

Si a alguien le sirve, quedó disponible en GitHub. Lo único que hay que cambiar es la función pathForName, el mapeo entre los nombres de las versiones y los directorios.

Aclaro que no soy experto en Bash ni mucho menos, así que seguramente haya muchas mejoras para hacerle. Cualquier aporte es bienvenido.

Por último, repetir que no está muy probado, así que quien lo quiera usar, hágalo bajo su propio riesgo. El soporte que le de dependerá del tiempo que pueda dedicarle. En principio, los cambios que le haga van a ser para poder usarlo yo de forma razonable en el día a día.