¿Por qué no avanza la label de la twig en CVS?

Nuestra compañía recientemente comenzó a crear sucursales de CVS para marcar cada lanzamiento. Anteriormente habíamos estado utilizando tags, y si solucionamos algo durante el período de testing que tenía que salir con el lanzamiento, simplemente movimos la label hacia adelante. Esto funciona bien hasta que se realicen dos cambios en el mismo file: uno que debe ser liberado y el otro que no debería. Ahora tenemos que aplicar el mismo cambio tanto a la cabeza como a la twig de lanzamiento.

Estoy usando el complemento CVS de Eclipse para interactuar con CVS. Cuando miro el historial de un file, veo una label de liberación i20090529 en la sección Etiquetas (en este caso en la revisión 1.30 del file), y cuando "Mostrar visor de tags" en la vista Historial, el icono indica que se trata de una twig label, a diferencia de una label de Versión. Cuando miro las revisiones que se han cometido desde que se produce la sucursal, veo que la siguiente revisión realizada al responsable pasa a ser la versión 1.31, y la próxima revisión realizada a la sucursal pasa a ser la versión 1.30.2.1. Mi pregunta es, ¿por qué la label i20090529Release permanece con la versión 1.30 del file, que no es la revisión más reciente en la twig i20090529? ¿Es esto realmente una "label" de buena fe, o es más bien una idea conceptual que la sucursal comenzó a ramificarse en este punto? Noté que no puedo aplicar esta label a ninguna otra revisión del file. ¿Por qué aparece en la columna Etiquetas en absoluto?

Gracias de antemano por cualquier aclaración que pueda proporcionar.

Es la idea de que la sucursal comenzó a ramificarse en ese punto.

Una twig es un set de versiones que se ramifican desde el tronco principal en algún punto, y mantienen su propio desarrollo independiente (que, por supuesto, puede coordinarse estrechamente). No es un set de cambios que se aplicará automáticamente a las versiones posteriores.

No es una label en el sentido habitual: si marca de acuerdo con una label, obtendrá una instantánea del tree fuente en el momento en que se realizó la label, mientras que los resultados de la verificación según una twig variarán con el time. , a medida que se realizan cambios en la twig. Es similar a una label, y funciona de la misma manera; CVS usa el formatting de file antiguo RCS y usa tags RCS para twigs y tags CVS.

Hay varias buenas references para CVS. Lea sobre tags y twigs.

Probablemente no se mueva porque no lo está usando; de acuerdo con su descripción, aún está cometiendo todas las revisiones en HEAD.

Para usar una twig, primero debe labelr todos los files con la label de bifurcación (este ejemplo del manual de CVS):

cvs tag -b rel-1-0-patches 

Al mismo time, recomiendo encarecidamente una label de instantánea que nunca mover o actualizar, por lo que siempre puede rebuild el código en ese momento:

 cvs tag rel-1-0 

Para usar la twig, debe verificar la twig en su directory de trabajo:

 cvs co -r rel-1-0-patches example 

Luego, cuando realice cambios contra la sucursal, verá la label de bifurcación aplicada al cambio. Lo que no verás es ningún cambio en HEAD. Para hacerlo, deberá fusionar los cambios de twig en HEAD, y eso es un poco demasiado complejo como para include una respuesta SO, por lo tanto, vaya a los documentos: http://ximbiot.com/cvs/manual/cvs-1.11 .23 / cvs_5.html # SEC54

Las tags normales se configuran para una revisión de file específica y nunca se moverán. Si taged 1.30 dirá 1.30 hasta que se cambie manualmente.

Las tags de twig se asocian a una revisión de twig, si se bifurca un file con la revisión 1.30, la primera twig será 1.30.2 (o el siguiente número par libre). El primer file comprometido con esta twig obtendrá 1.30.2.1, el siguiente commit 1.30.2.2, etc. (ver detalles en el comentario de Oliver Giesen)

Si revisa este file desde esta twig (1.30.2) siempre obtendrá la última revisión de files en esa twig (1.30.2.x).

También se pueden hacer twigs en las twigs … entonces las revisiones terminarían como 1.30.2.2.2 (primera twig de la revisión del file 1.30.2.2) Las revisiones en cvs son <branchrevision>. <Filerevison> [. <Branchrevision>. <Filerevison> ] [. <branchrevision>. <filerevison>] … y así sucesivamente. Primero branchrevision es siempre 1 (afaik).

editar: se corrigió el error de número par señalado por Oliver Giesen