¿Qué es una rama?

Supongamos que su trabajo es mantener un documento para una de las divisiones de su compañía, una especie de manual. Un día una división diferente le pide ese manual, pero con algunas partes 'retocadas' para ellos, dado que hacen las cosas de forma ligeramente diferente.

¿Qué hace en esta situación? Lo más obvio: realiza una segunda copia de su documento, y comienza a mantener ambas copias de forma separada. A medida que cada departamento solicita pequeños cambios, usted los incorpora en una de las copias o la otra.

A menudo desea realizar el mismo cambio en ambas copias. Por ejemplo, si descubre un error ortográfico en la primera copia, es muy probable que el mismo error exista en la segunda copia. Al fin y al cabo, ambos documentos son casi iguales; sólo se diferencian en pequeños detalles específicos.

Este es el concepto de una rama— una línea de desarrollo que existe de forma independiente a otra, pero comparte una historia común si mira suficientemente atrás en el tiempo. Una rama siempre nace como una copia de algo, y a partir de ahí, pasa a generar su propia historia (vea Figura 4.1, “Ramas de desarrollo”).

Figura 4.1. Ramas de desarrollo

Ramas de desarrollo

Subversion tiene comandos para ayudarle a mantener ramas paralelas de sus ficheros y directorios. Le permite crear ramas copiando sus datos, y recordando que las copias están relacionadas unas a otras. También le ayuda a duplicar cambios de una rama a otra. Finalmente, puede reflejar el contenido de diferentes ramas en partes de su copia de trabajo local, para que pueda mezclar y probar diferentes líneas de desarrollo en su trabajo diario.