Trunk, branch y tag son tres de los principales conceptos que tenemos que tener claro a la hora de usar un control de versiones. No nos importa el sistema de control de versiones que usemos, ya que son conceptos globales. Estos conceptos existen en CVS, Subversion, Git o Mercurial
- Trunk (tronco): la línea o rama principal de desarrollo. Sobre esta rama se tiene el código que ya está preparado para una release. Idealmente debería tener un control de pruebas, test,… que permita que este código esté en un estado estable.
- Branch (rama): copia de código para hacer cambios. Lo ideal es que cada desarrollador trabajara en su rama y luego, una vez validado los cambios, hiciera la integración con trunk.
- Tag (etiqueta): sirve para identificar un cierto momento en el desarrollo que queremos preservar. Lugar ideal para marcar cambios de versión (alfas, betas, RC, RTM) y puntos de interés como copias de despliegues. Sobre un tag no se puede / no se debe hacer cambios.