Blog

Uso de Branches y Tags con SVN

El uso de branches y tags en SVN nos permite una mejor organización del trabajo en equipo. Si bien no muchos usuarios de SVN utilizan esta funcionalidad su uso trae varias ventajas.

Marcelo Ruiz, 28/08/2009

El uso de branches y tags en SVN nos permite una mejor organización del trabajo en equipo. Si bien no muchos usuarios de SVN utilizan esta funcionalidad su uso trae varias ventajas.

Branches

Los branches se utilizan cuando se desea crear una rama independiente de desarrollo para trabajar en alguna funcionalidad nueva de un proyecto que todavía no se quiere incorporar a la línea principal. De esta forma, se crea una copia del proyecto en una carpeta /branches y el programador encargado de esta nueva característica cambiará (switch, según la terminología de SVN) su working copy a este nuevo branch y trabajará sobre este.

Cuando este programador realice operaciones de commit las realizará sobre su branch, sin afectar el desarrollo principal. Cuando esté listo para integrar sus cambios a la línea de trabajo principal, realizará una operación de merge.

Tags

El uso de tags se da cuando queremos "marcar" una determinada revisión por alguna razón en especial. Por ejemplo, podemos querer marcarla porque se trata de un release entregado al cliente. En este caso, como en el anterior, se crea una copia de la revisión deseada del repositorio en la carpeta tags. Técnicamente la creación de un branch y un tag es idéntica, ya que se realizan con el comando svn copy. La diferencia radica en la forma en que se les da su uso; en los branches está permitido realizar commits y en los tags no. Esta "prohibición" sobre la realización de commits o no es virtual, ya que no existe impedimento técnico sino que son los programadores los que lo deben tener en cuenta.

Creación y uso de branches y tags

El comando para la creación, tanto de branches como tags, es svn copy:

$ svn copy http://svn.example.com/proyecto/trunk \            http://svn.example.com/proyecto/branches/soporte-IPv6 \       -m "Branch para agregar soporte para IP v6" 

Si trabajamos con Tortoise SVN es aún más fácil, ya que tenemos un comando Branch/tag. Con Tortoise SVN tan solo tenemos que hacer clic derecho sobre nuestra working copy y elegir el comando Branch/tag. Tortoise reconocerá la URL de origen en el repositorio y nos pedirá la URL de destino, donde queremos hacer la copia.

En la ventana para crear un nuevo branch o tag, también tenemos un checkbox que podemos marcar para automáticamente hacer el switch al branch o al tag recientemente creado. De no hacerlo, podremos realizar el switch en cualquier otro momento con el comando homónimo.

Finalmente, para reintegrar un branch a la línea de desarrollo principal, recurrimos al comando Merge.

Estructura de directorios recomendada

La estructura de directorios recomendada por SVN, para la raíz de nuestros repositorios es de tres carpetas:

  • /trunk: este directorio aloja la línea de desarrollo principal.
  • /tags: en esta carpeta guardamos los tags que vayamos creando, por ejemplo /trunk/release-1.2/.
  • /branches: en esta carpeta guardamos los branches que creemos.

Es una buena práctica seguir esta estructura, aunque aún no hayamos decidido trabajar con branches y tags ya que de decidirlo más adelante será más complicado cambiarlo.

Publique su comentario

anti-spam

Comentarios

Luis 2009-09-14 00:00:00

Buena tu aclaración Marcelo ... gracias

John Díaz 2009-09-21 00:00:00

Hola que tal, me ha parecido muy bueno su artículo, de verdad que no se encuentra mucho al repecto en la web, y mucho menos en español. Por lo tanto, queria saber si tienen algún libro o website recomendado para encontrar mayor información al respecto.

Muchas gracias.

Federico 2009-11-17 00:00:00

Muy Buen articulo! Sds y gracias

Hostper 2009-12-05 00:00:00

Hola estuve revisando tu blog y me parece muy interesante y entretendido, sobre todo que la información es detallada y precisa, espero que sigas posteando más temas para informarnos y comentar. Saludos.

webhostingperu 2009-12-05 00:00:00

Déjame felicitarte, que bueno que está tu blog los temas tienen la información exacta que me interesa, sigue posteando más sobre estos temas de color y diseño. Saludos.

Ignacio Calvo 2010-03-30 00:00:00

Gracias por el artículo, me ha resultado muy instructivo.

Creo que el ejemplo de tags tiene un error, debería ser /tags/release-1.2/, ¿no?

Jose 2010-04-22 00:00:00

Consulta: ¿se crea el tag a partir de un branch? ¿o un branch a partir de un tag? Molto grazzie

Marcelo Ruiz 2010-04-22 00:00:00

José,

tag y branch son la misma cosa para svn. Vos decidís qué es de acuerdo a dónde lo copies. Eso lo manejás como vos quieras.

Saludos

Nicolas 2010-04-26 00:00:00

Hola, esta correcto crear un branch desde el raiz de mi aplicacion ( por ejemplo una aplicacion web) o solo hay que hacerlo de los archivos o modulos que , luego del primer release, son modificados Gracias

Marcelo Ruiz 2010-04-26 00:00:00

Nicolás: El branch se supone tiene que incluir todos los archivos del proyecto.