- Event Handlers en WinForms ... 30/07/2010
- ¡La historia clínica es mia! En el día de hoy se anunció una nueva disposición legal en la Argentina por la cual se reconoce... 23/10/2009
- La eterna discusión de quién tiene más botones Un poco más sobre la clásica disputa Mac vs.... 20/10/2009
- Use Cases vs. User Stories Opinión personal sobre el empleo de Use Cases y User Stories para definir requisitos... 20/10/2009
- Lanzamiento de Google Maps en Argentina A partir de hoy Google lanzó el Centro de Comercios Locales en Google Maps Argentina. Este... 02/10/2009
- Reloj mundial Increible reloj que da la hora en cualquier punto del planeta al mismo... 29/08/2009
- Error Saving changes is not permitted en SQL Server 2008 Solución al error que impide guardar cambios que requieren re-crear las tablas en SQL Server... 29/08/2009
- 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... 28/08/2009
- Cómo determinar la paridad de claves para encriptación con DES Un tema que resulta confuso es determinar si una clave DES es odd parity o even parity. El... 28/08/2009
- Power Tip para Builds Lentos en aplicaciones Mobile Si estás desarrollando una aplicación Mobile con Visual Studio, por alguna extraña razón que... 28/08/2009
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
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.

