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.

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.

Author: Marcelo Ruiz

Marcelo has been working as a software developer for more than 15 years. He has participated in projects for companies in USA, Mexico, Argentina, Europe and Africa. He is skilled with Microsoft technologies such as ASP.NET, MVC, C#, WCF and SQL Server, among others.

2 thoughts on “Uso de Branches y Tags con SVN

  1. Hola, tengo una duda/problema, quiero hacer un commit creando un nuevo tag a partir de otro ya existente.
    No tengo subido el codigo a la rama trunk porque estos nuevos cambios son un fix de la version anterior.
    Es decir, tengo la version 1.1.1 subido a un tag.He realizado cambios en esta version, y lo quiero subir a svn directamente a un nuevo tag con version 1.1.2, sin pasar por el trunk , como puedo hacer esto ¿?

    • No hay problema. Lo que tendrías que hacer ahí es crear un branch nuevo. Si usás TortoiseSVN, y elegís la opción Branch/Tag desde el raíz de tu working copy, vas a ver que te da la opción de crear un branch desde la URL de tu working copy, es decir, desde el tag 1.1.1. No hay ningún problema. Ojo, si tenés cambios locales que no querés subir al 1.1.1 y hacés switch al nuevo branch, los vas a perder! Hacete una copia de esos cambios y luego pisá la wc luego de hacer el switch. Cualquier cosa, contactame a marcelo arroba centraldev.com.ar

Leave a Reply

Your email address will not be published. Required fields are marked *