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
, dondeN
yK
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
, dondeN
,M
yK
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í...