La ramificación , en el control de versiones y la gestión de la configuración del software , es la duplicación de un objeto bajo control de versiones (como un archivo de código fuente o un árbol de directorios ). A partir de entonces, cada objeto puede modificarse por separado y en paralelo para que los objetos se vuelvan diferentes. En este contexto, los objetos se denominan ramas . Los usuarios del sistema de control de versiones pueden bifurcar cualquier bifurcación.
Las ramas también se conocen como árboles , arroyos o líneas de código . La rama de origen a veces se denomina rama principal , rama ascendente (o simplemente ascendente , especialmente si las ramas son mantenidas por diferentes organizaciones o individuos) o flujo de respaldo . Las ramas secundarias son ramas que tienen un padre; una rama sin un padre se denomina troncal o línea principal . [1]
En algunos sistemas de control de revisiones distribuidos , como Darcs , no se hace distinción entre repositorios y ramas; en estos sistemas, obtener una copia de un repositorio equivale a bifurcar.
La ramificación también generalmente implica la capacidad de fusionar o integrar posteriormente los cambios en la rama principal. A menudo, los cambios se vuelven a fusionar con el tronco, incluso si esta no es la rama principal. Una rama que no está destinada a fusionarse (por ejemplo, porque un tercero la ha vuelto a otorgar bajo una licencia incompatible, o porque intenta cumplir un propósito diferente) se suele denominar bifurcación .
Motivaciones para la ramificación
Las sucursales permiten desarrollar partes de software en paralelo. [2] Los proyectos grandes requieren que se llenen muchos roles, incluidos desarrolladores, gerentes de construcción y personal de control de calidad . Además, es posible que deban mantenerse varias versiones en diferentes plataformas de sistemas operativos. Las ramas permiten a los contribuyentes aislar los cambios sin desestabilizar el código base, por ejemplo, correcciones de errores, nuevas características , [3] e integración de versiones . Estos cambios pueden fusionarse (resincronizarse) más tarde después de la prueba.
Rama de desarrollo
Una rama de desarrollo o árbol de desarrollo de una pieza de software es una versión que está en desarrollo y aún no se ha lanzado oficialmente . En la comunidad de código abierto , la noción de lanzamiento es típicamente metafórica, ya que cualquiera puede ver la versión deseada, ya sea en la rama de desarrollo o no. A menudo, la versión que finalmente se convertirá en la próxima gran versión se llama la rama de desarrollo. Sin embargo, a menudo hay más de una versión posterior del software en desarrollo en un momento dado.
Algunos sistemas de control de revisiones tienen jerga específica para la rama de desarrollo principal; por ejemplo, en CVS , se llama "PRINCIPAL"; en Git se llama "maestro". Un término más genérico es " tronco ".
Ramas de sombra o mágicas
En CVC y CVSNT , una sombra o mágicas rama "sombras" Los cambios realizados en la rama aguas arriba, para que sea más fácil de mantener pequeños cambios (CVC es un paquete de código abierto sistema de construcción [ cita requerida ] que incorpora un sistema de control de revisión de paquetes producido por rPath .)
Clones de repositorio
En el control de revisión distribuido , todo el repositorio, con las ramas, se puede copiar y seguir trabajando. Monotone (mtn), Mercurial (hg) y git lo llaman "clon"; Bazaar lo llama "sucursal". [ cita requerida ]
Ver también
Referencias
- ^ Berczuk, Steve; Appleton, Brad (2003). Patrones de gestión de la configuración de software: trabajo en equipo eficaz, integración práctica . Addison-Wesley . ISBN 0-20174117-2. Consultado el 24 de mayo de 2007 .
- ^ Appleton, Brad; Berczuk, Stephen; Cabrera, Ralph; Orenstein, Robert (8 de febrero de 1998). "Líneas fluidas: patrones de ramificación para el desarrollo de software paralelo" ( PDF ) . Ladera . Consultado el 12 de agosto de 2009 .
- ^ Bailey, Derick (15 de julio de 2009). "Parte 1: Por qué" . Control de fuente de rama por función . Los techies . Consultado el 12 de agosto de 2009 .