miércoles, 24 de agosto de 2011

[Svn] Branches, trunk y tag

Mucha gente seguro ha oido hablar de Svn. Para la gente que no tenga idea de qué se trata, puede hechar un vistazo en google a los conceptos de subversión, control de versiones, etc.

El objetivo de este post es ayudar a los que recién se inician en el control de versiones con Svn, a organizar un proyecto dentro del repositorio, y para que al que le hayan aparecido estas carpetas les dé un buen uso.


Trunk - Carpeta de trabajo actual.
En esta carpeta se pondrá el código del trabajo día a día.

Tags - Carpeta de releases.
En esta carpeta se agregan copias de la carpeta Trunk, para cada versión de lanzamiento de la aplicación.

Branches - Carpeta de ramas.
En esta carpeta se colocarán copias de la carpeta Trunk, en caso de que paralelamente se deseen realizar experimientos sobre el proyecto, siendo estos experimentos riesgosos para el mismo dada la magnitud de sus cambios.

La idea básicamente es trabajar sobre la carpeta trunk. Trunk representa el "tronco" del proyecto. En los branches, además de utilizarla para realizar experimentos, también podemos usarla para cuando hay grupos de programadores trabajando sobre diferentes aspectos del sistema, que podrían llegar a afectar al funcionamiento del proyecto quitándole estabilidad.
Cuando uno trabaja con un branch, va a desear luego incluir ese contenido dentro del "tronco" del proyecto. Para ello, deberá realizar lo que se llama un "merge". Un merge es una operación para unir diferentes revisiones o carpetas del proyecto. Al hacer un merge, el desarrollador deberá asegurarse de realizar todas las correcciones necesarias para que el software no explote, dado que el merge no siempre puede ser perfecto. Esto se debe a que a medida que se va trabajando en los branches, además, el tronco puede ir evolucionando. Siempre se requiere de la habilidad humana para realizar un merge.

Bueno, por el momento, eso es todo.

Espero que sea útil, saludos!