2009-04-22 18 views
5

Empecé a usar bazar después de un largo campamento en el campo svn. También tuve experiencia previa con cvs y usé etiquetas de vez en cuando.¿Cuál es el punto de las etiquetas en el bazar?

Con svn, una vez que suelta una versión, realiza una copia svn de su troncal en etiquetas, por ejemplo, svn copy trunk tags/1.2.0. En bazar creé la misma estructura de repositorio, pero la ausencia de una opción de copia bzr y la presencia de la etiqueta bzr me hicieron reflexionar.

El hecho es que las etiquetas me resultan difíciles de usar o inútiles. Si uso etiquetas, básicamente tengo mi troncal como el único directorio, y cuando alcanzo un hito, lo etiqueto. Luego sigo desarrollando y etiquetando nuevamente cuando se alcanza un nuevo hito. Esto complica las siguientes tareas:

  • comparan una nueva versión contra una versión antigua de forma recursiva (con el enfoque SVN-como: diff -r --brief)
  • solución de errores una versión antigua, y crear una nueva versión con su patchversion incrementó (con el enfoque svn-like: svn copy 2.0.0 2.0.1, luego agrega la corrección a 2.0.1 y la confirma)
  • obteniendo la versión que deseas sin tener que verificarla (si la retiras) todo el árbol en svn-like, tiene todas las versiones y ramas, y lo hace solo una vez)

Como resultado, uso la misma estructura svn repo en bzr, y realizo una copia física del tronco cada vez. Esto significa que no veo ningún uso real del comando de etiqueta bzr en esta disposición. ¿Por qué debería etiquetar toda la revisión de repo con un número de versión, si contiene todos ellos para cada revisión?

¿Alguien podría decirme qué estoy haciendo mal al usar y comprender las etiquetas para un repositorio bzr?


Editar

Así que por lo que yo veo el concepto es tener diferentes ramas bzr (ramas independientes, procedentes del tronco a través de bzr branch) para cada versión. Es como svn, solo que no colocas el directorio raíz en el repositorio. Todavía no veo ninguna razón particular para etiquetas, aparte del hecho de que, si usted tiene decir foo-1.0.0 foo-1.0.1 foo-2.0.0 foo-2.1.0 tronco

y asumiendo que siempre etiquetó lanzamientos antes de la bifurcación, trunk tendrá etiquetas para todos ellos, mientras que foo-2.0.0 tendrá foo-1.0.0 entre sus etiquetas, pero no foo-1.0.1 porque se ramificó desde foo-1.0.0.

Todavía no veo la necesidad de tener y usar etiquetas. Mi etiqueta está implícita en el nombre del directorio que elijo para esa rama. No estoy realmente interesado en un número de versión particular, solo me interesa que esté en un directorio específico.

Respuesta

12

Qué son las etiquetas en bzr?

Las etiquetas son simplemente un mango fácil de recordar para una revisión en particular. En lugar de intentar recordar [email protected], o revno 19721, puede hacer referencia a la etiqueta:

bzr export -r tag:foo-1.0.0.0 release-foo-1.0.0.0.tar.gz trunk/ 

¿Cómo puede ocurrir gestionar las emisiones en bzr?

Suena como si usted está tratando a sus comunicados como líneas separadas de desarrollo (aka: ramas), por lo que recomiendo el etiquetado de su tronco, para que sepa donde ramificada a partir de y la creación de ramas de liberación separadas:

bzr tag -r 1234 -d trunk/ foo-1.0.0.0 
bzr branch -r 1234 trunk/ release-1.x 

al hacer sus correcciones para las versiones 1.x, que ellos lo hacen en la rama 1.x-liberación, el etiquetado de cada punto de desenganche:

bzr tag -r 1255 -d release-1.x/ foo-1.0.0.1 
bzr export -r tag:foo-1.0.0.1 release-foo-1.0.0.1.tar.gz release-1.x/ 

la estructura de directorios podría ser algo como esto:

fooproj/ 
    release-1.x/ 
    release-2.x/ 
    trunk/ 
+0

Sí, pero no veo ninguna razón para recordar fácilmente una revisión específica, si no tengo motivos para necesitarla. las revisiones son incrementales, pero el único hecho particular que tienen es que están ordenadas a tiempo. Hacer un pedido en la versión es diferente, ya que puedo lanzar 2.0.1 mucho después de que 3.0.0 haya salido. –

+0

Sus etiquetas casi parecen GUID. :) – Luke

+0

Sí, solo han sido 1.0, 2.0, etc. Me dejé llevar por segmentos de versión significativos, y me gusta usar foo cada vez que tengo la oportunidad, así que lo tiré; o) – vezult

8

Bueno, básicamente, no intentes copiar la estructura del directorio SVN. No tengo idea de por qué SVN lo tiene de esa manera, pero básicamente las etiquetas son solo un marcador en un punto en el tiempo en tu repositorio bzr. Cuando desee diff contra una etiqueta, se puede hacer como

bzr diff -r tag:TAG_NAME 

Así que cuando usted está haciendo una versión, simplemente etiquetarla y estar en su camino. Nada especial, como mover algo a una carpeta específica o cualquier cosa.

Te recomiendo que empieces a usar ramas separadas en lugar de etiquetas para las cosas a las que te gustaría volver, por ejemplo, la línea 2.0.x de tu código, para que tengas una rama para 2.0.xy luego etiquetas como 2.0.0 y 2.0.1 en él.

Además, la salida http://bazaar-vcs.org/Specs/Tagging

1

Etiquetas en svn es más parecido a svn branches. Usted ha descrito el flujo de trabajo que se correlacionó bien con las ramas bzr. Etiquetas le permite tener una rama con punteros a sus comunicados, por lo que cualquiera puede ser liberado exactamente versión del tronco:

bzr rama del tronco foo-1.0 -r etiqueta: 1.0

Cuestiones relacionadas