Trunk, branch y tag

Trunk, branch y tag son tres de los conceptos principales a manejar a la hora de utilizar un sistema de control de versiones, como CVS, Subversion, Git o Mercurial. A continuación tenéis una pequeña definición de estos tres términos.

  • Trunk (tronco): la línea principal de desarrollo, donde se llevan a cabo los cambios menos complejos del día a día. Idealmente debería poder compilarse y pasar todas las pruebas en todo momento (ver Integración continua). La persona que rompa la compilación, debe ser públicamente humillada, y debe pagar una penitencia en donuts
  • Branch (rama): cuando se van a llevar a cabo cambios importantes que romperán la compilación, pruebas, experimentos o intentos de optimización, debe crearse una nueva rama de desarrollo, con la que no molestemos a los compañeros, esto es un branch: una copia del código o la rama de la que deriva. En esta copia haremos nuestros cambios, integraremos los arreglos que puedan haberse ido haciendo en el trunk, y, una vez terminado el desarrollo en la rama, integraremos (o no) los cambios en el trunk. También puede crearse una rama para una versión terminada, hacer mantenimiento de esta versión sobre esta rama, y continuar el desarrollo de la nueva versión en el trunk.
  • Tag (etiqueta): etiquetas que sirven para identificar un cierto momento en el desarrollo que queremos preservar. Se utilizan habitualmente para marcar cambios de versión (alfas, betas, RC, RTM) y puntos de interés. Sobre un tag no se puede / no se debe hacer cambios

15 pensamientos en “Trunk, branch y tag”

    1. Aun que al principio se me complico la vida al empesar este tipo de organizacion, ahora para mi ya es indispensable en cualquier proyecto de desarrollo

    1. Depende el nivel de usuario que seas y la mayor parte de veses en el tag se ponen las vesiones estables y terminadas hasta el momento! como ejemplo:

      software v0.1
      software v0.2
      etc etc.

      Tambien puedes aplicar mass ramas aqui etc.. Las versiones se manejan dependiendo la modificacion que se le haga! Es algo fasinante!!

    2. Más bien deberían ser los branches, ya que las versiones que estás desarrollando deberían estar en /branch, así que son las partes que mayor tráfico de commits tienen.

    3. Los tags son más bien una especie de backup o catálogo de versiones pasadas: “la versión que rulaba el 3 de febrero era la 1.57, vamos a bajarla y ver en qué ha cambiado la 1.58 para que ya no vaya”.

  1. Hola, muy interesante, yo he intentado de usar subversion varias veces, pero siempre claudico. Existe una tabla comparativa de SVN, GIT, CVS y Mercurial para cual es mejor para determinados proyectos? O en su defectos las ventajas y desventajas.

    1. No dispongo de la tabla comparativa que pides, pero hasta donde yo sé, en el mundo empresarial se suele utilizar SVN que es, además, el más conocido y supongo más utilizado de todos los que sugieres.

      Espero sirva de ayuda

      Un saludo

  2. Aprovechando el tema, me gustaría preguntaros si conocéis la manera de montar tu propio servidor de subversion, disponible en la red, es decir, que no dependa de que tu máquina esté encendida para que otros puedan trabajar en él. Tengo entendido que los hostings habituales no permiten su instalación, y aunque conozco xp-dev.com, sólo te dejan dos proyectos privados y el resto deben ser públicos.

    Gracias de antemano =)

    1. Subversion (software) incluye svnserve (servidor).
      Sólo hay que mirar la documentación e iniciarlo con los comandos que hagan falta.

      Luego, cuando conectas a un servidor SVN, pones localhost y au.

      Si prefieres un GUI, me temo que VisualVNC Server es el único que queda potable, y que no es ni más ni menos que un wrapper (marco) para el Subversion, pues lo incluye dentro.
      VisualSVN además incorpora Apache para la interfaz web.

  3. Pingback: WordPress desde Cero – 3/5. Configuración del SVN y sincronización | @mcalduch

  4. Hola, veran soy totalmente nuevo en el mundo de la subversion y pues, estoy en mi primer trabajo como desarrollador y me han mandado a averiguar y aprender todo sobre lo que es el SVN, no entiendo especificamente que hacen el trunk, branch y tag. Tengo que poner en alguno de ellos el proyecto por completo o como es el procedimiento si alguno tiene como ayudarme le agradezco de antemano. Gracias.
    Desde Lima – Perú!

  5. Pingback: Lleva Git al próximo nivel con Git Flow

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.