¿Cuál es la diferencia entre una etiqueta y una rama en SVN?


Trabajo con ramas SVN y TRONCO durante años, pero nunca con etiquetas

¿Puede alguien aconsejar cuál es la principal diferencia entre ellos? ¿Cuál es el propósito principal del etiquetado?

Author: Maciej, 2011-08-04

4 answers

Esto es de http://svnbook.red-bean.com/en/1.5/svn.branchmerge.tags.html

Pero espere un momento: ¿no es el mismo procedimiento de creación de etiquetas procedimiento que utilizamos para crear una rama? Sí, de hecho, lo es. En Subversion, no hay diferencia entre una etiqueta y una rama. Ambos son solo directorios ordinarios que se crean copiando. Al igual que con branches, la única razón por la que un directorio copiado es una "etiqueta" es porque los humanos han decidido tratarlo que way : mientras nadie jamás commits al directorio, siempre permanece como una instantánea. Si la gente comienza a comprometerte con él, se convierte en una rama.

Técnicamente, es lo mismo que una rama, pero conceptualmente lo tomamos como una instantánea. En mis repositorios svn, sé que las ramas incluirán características grandes que pueden o no haberse fusionado en el tronco, pero uso etiquetas para marcar solo las versiones de lanzamiento.

 61
Author: Jonathon Bolster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-04 08:46:26

La única diferencia es para qué los usas, son los mismos.

Una rama es donde se puede desarrollar el trabajo en una versión diferente del código al tronco principal.

Una etiqueta se usa para "etiquetar" una versión. Digamos que trabajo sólo en el maletero. Cuando envío V1 a un cliente, creo una "Etiqueta V1" para él. Luego trabajo en V2. Cuando el cliente tiene un problema con la V1, puedo simplemente revisar la etiqueta y comenzar a depurar el problema en la misma versión exacta que el cliente. Puedes registrarte en un etiqueta, pero se supone que no debes. Si necesita hacer una versión V1.1, cree una rama de la misma versión que la etiqueta V1, y verifique las correcciones a esa, y etiquétela cuando se lance como V1.1.

 22
Author: DaveShaw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-04 08:49:48

"Trunk" y "Branches" se usan típicamente para el desarrollo activo y actual. Es donde los usuarios commit / checkout archivos. Por lo general, es donde ocurre mucha actividad.

Por otro lado, las "etiquetas" se utilizan normalmente para crear una instantánea y un hito de su desarrollo. No es realmente ideal para su equipo hacer cualquier commit / checkout en las carpetas de etiquetas.

Aquí hay dos ejemplos de la aplicabilidad de las etiquetas:

  1. Archivado de sucursales-Cuando una Versión o Característica la rama ha sido terminada o completamente desechada, normalmente la borrarías y esto la ocultaría efectivamente de la revisión de HEAD. Algunas personas generalmente no eliminan estas carpetas para archivarlas, ya que preferirían ver todas sus versiones / proyectos. Sin embargo, esto puede hacer que el árbol de ramas sea difícil de navegar. Es por eso que es mejor mantener solo las versiones y características del proyecto activas y en ejecución en la versión PRINCIPAL de la carpeta branches. Puede crear una copia de etiqueta de la última revisión de esas ramas archivadas para que aún pueda verlas en la revisión HEAD. De esta manera puede tener una instantánea rápida de la última revisión de la rama antes de que la rama se archivara y también mantener las cosas ordenadas en el árbol de ramas.

  2. Mantener hitos-Los proyectos generalmente tienen muchas fases de desarrollo. DEV, UT, QA, pre-QA, post-QA, BAT, post-BAT, PROD, pre-PROD, post-PROD. Puede usar etiquetas para hacer una instantánea de su desarrollo en cada etapa significativa en lugar de depender de números de Revisión, Fechas o Comentarios.

Las etiquetas pueden ser de gran ayuda para organizar las cosas, pero a veces también pueden ser caóticas. Es importante tener una convención de nomenclatura estándar para nombrar carpetas de etiquetas.

 8
Author: ianstigator,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-07 23:56:41

Las etiquetas y las ramas son técnicamente equivalentes. La diferencia es cómo se usan típicamente.

Usted usa ramas para hacer una copia editable de código para que pueda desarrollar una copia estable y una copia de trabajo al mismo tiempo.

Utiliza etiquetas para hacer una copia de solo lectura del código para que pueda obtener ese código más adelante. Así es como se usa esto con las compilaciones diarias. Cada compilación diaria simplemente crea una etiqueta con un nombre que contiene ese número de compilación. Una vez que usted necesita para obtener las fuentes de que hace mucho tiempo construir más tarde (por ejemplo, para reproducir un error) que acaba de exportar desde esa etiqueta.

 2
Author: sharptooth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-04 08:50:58