SVN: Tagging y Branching

¿Qué son un Tag y un Branch de SVN? Ambos son creados inicialmente como copias del "trunk" de una carpeta SVN. Un Tag es simplemente una revisión SVN marcada especialmente, lo que nos permite darle un nombre más amigable que "revisión 901". Es por esto que es usual ir crear un tag cada vez que se publica una nueva versión del software, marcando la versión de los archivos en concordancia con el nombre del tag; un nombre esperable para un tag sería "Versión 3.2.0".

Por otro lado, un branch es una línea de desarrollo separada, y se usa en varios escenarios. Supongamos que queremos hacer un gran refactoring sin interferir con el trabajo del equipo, y queremos hacer commits a lo largo de nuestro trabajo porque es largo y complejo. Por lo tanto, creamos un branch como una copia del "trunk" (la línea principal de desarrollo) y trabajamos ahí. Cuando terminamos, hacemos un merge de nuestros cambios en el trunk, "reintegrando" el branch, que deja de existir al hacer eso.

Otro uso de los branches es aislar el trabajo de mantenimiento del de desarrollo. Supongamos que entregamos una versión inicial de varios de nuestros productos. Luego de eso, creamos un "branch de mantenimiento" para cada producto y seguimos trabajando en el trunk. Cuando nos llegan un reporte de bugs o pedido de nueva funcionalidad para un producto, pasamos a trabajar en el branch de ese producto. Hacemos lo mínimo necesario para resolver lo pedido, y una vez hecho y probado, hacemos un merge de los cambios hacia el trunk. Estos branches no son "reintegrados" al trunk como en el escenario anterior; existen mientras demos soporte para el producto asociado.

Para usar esta funcionalidad con Tortoise SVN, basta hacer click derecho a nuestra working copy, y seleccionar "Branch/Tag" en el menú contextual. Con "Tag", basta con elegir una revisión y definir el nombre del tag. Crear un branch es similar, con algunas opciones extra. Una vez creado el branch o el tag, con la opción "Switch" se puede llevar la working copy a un tag o branch específico. Es importante recordar que si se hace un switch a un tag, al intentar hacer un commit saltará un warning. Esto es porque, por convención, los tags se crean y no se tocan nunca más.

Para más detalles:

Comments

Popular posts from this blog

VB.NET: Raise base class events from a derived class

Apache Kafka - I - High level architecture and concepts

Upgrading Lodash from 3.x to 4.x