tag subversion que new informatica create crear branches svn version-control collaboration

subversion - ¿La mejor práctica para las etiquetas SVN?



svn merge branch to trunk (4)

¿Debería usarlos como versiones separadas? ¿Los vuelvo a verificar en el tronco o las ramas? ¿Está todo esto en el libro rojo y acabo de perder el tiempo?


La mayoría de las personas que conozco que todavía están en SVN etiquetan su troncal (o rama de producción actual) justo antes de cada lanzamiento.


No estoy seguro de lo que quiere decir con "lanzamientos separados", pero copiamos desde el tronco o la rama en la que estamos haciendo una compilación en la carpeta de etiquetas con un nombre descriptivo, como Proj-1.20.33

De esta manera, para cada compilación que hemos creado, podemos volver a esa versión específica. En general, no le gustaría hacer ningún cambio real en una etiqueta. Para nosotros, seguimos adelante y cambiamos algunos números de versión para el código y el instalador a través de nuestro proceso de compilación automatizado, de modo que solo esos cambios se fusionen, e incluso entonces, eso es lo único que modificaría esos archivos en particular.

El Libro SVN habla sobre esto un poco en Patrones de ramificación comunes y las entradas de Etiquetas .


Prefiero seguir la estructuración de mi directorio de repositorios de etiquetas :

/tags /builds /PA /A /B /releases /AR /BR /RC /ST

PA significa pre-alfa A significa alfa B significa beta AR significa alfa-release BR significa beta-release RC significa liberación del candidato ST significa estable

Hay diferencias entre compilaciones y lanzamientos .

  • Las etiquetas en la carpeta de compilaciones tienen un número de versión correspondiente a un patrón NxK , donde N y K son enteros. Ejemplos: 1.x.0 , 5.x.1 , 10.x.33
  • Las etiquetas en la carpeta de lanzamientos tienen un número de versión correspondiente a un patrón NMK , donde N , M y K son enteros. Ejemplos: 1.0.0 , 5.3.1 , 10.22.33 .

El ejemplo de la estructura resultante del directorio del repositorio de tags en algún momento específico durante la evolución de la estructura del repositorio sería el siguiente:

/tags /builds /PA /1.x.0 /1.x.1 /A /1.x.2 /B /1.x.3 /1.x.4 /releases /AR /1.0.0 /1.1.0 /BR /1.0.1 /1.0.2 /1.1.1 /RC /1.0.3 /1.1.2 /ST /1.0.4 /1.1.3

En realidad, este principio de etiquetado es solo una parte del enfoque de la estructuración del repositorio. Es posible que encuentre útil el diagrama que ilustra el principio de etiquetado que describí. También contiene una visión general más compleja de los procesos de gestión de configuración, incluidas la numeración de versiones y bifurcaciones.


No olvide que una etiqueta y una rama son esencialmente lo mismo en SVN: ambas son el resultado de svn copy

El truco es que, como una etiqueta representa una instantánea, debe ser una imagen "inmutable", ya que no debe modificarla.

Lo que esa instantánea (etiqueta) representa depende totalmente de usted. puede ser:

  • un estado estable en el desarrollo
  • una marca justo antes de una fusión complicada (para volver a ella si la fusión es demasiado compleja como para resolverse rápidamente)
  • un lanzamiento o un parche
  • y así...