2010-05-25 14 views
7

Estoy buscando opiniones aquí. Lo siguiente puede considerarse una pregunta específica de SVN o una pregunta de control de versión más general.Ramificación de una etiqueta

Si las fuentes de un proyecto son para ser ramificada en un punto correspondiente a una liberación, tal vez para trabajos de mantenimiento, es preferible:

(a) rama de la etiqueta, o

(b) rama del nodo (por ejemplo, en el tronco) que la etiqueta copia?

¿Cuáles son los pros y los contras de estos dos enfoques? ¿Importa en absoluto?

Gracias.

Respuesta

5

Sugeriría (b) ya que eso le permitirá pasar fácilmente la fusión al tronco utilizando el seguimiento de combinación de svn (suponiendo que tiene svn 1.5+ en el lado del servidor y del cliente). Si utilizó la técnica (a), tendría que administrar las fusiones por su cuenta, lo cual no está mal suponiendo que no realice fusiones múltiples desde la misma sucursal. Dado que está considerando crear una rama a partir de una etiqueta, lo que es habitual en el parcheo, es probable que termine necesitando fusionarse más de una vez con su línea troncal para volver a colocar esos parches en el tronco.

Las etiquetas son una forma preferida de tomar "instantáneas" a tiempo o marcar hitos de una línea de código particular (ya sea troncal o una rama) solo para construir rápidamente un hito específico desde la fuente etiquetada como un hito o para diferir fácilmente entre hitos. Aparte de eso, todo el trabajo se hace entre el tronco y las ramas. Como ya se señaló, puede encontrar fácilmente la revisión/fuente desde donde se copió una etiqueta fácilmente usando svn log. Por ejemplo, svn log --stop-on-copy -v tags/yourtag pondrá la última revisión copiada al final de la salida. Esto le permite crear una rama desde la revisión y una línea de código activa desde la cual se creó la etiqueta.

+0

Resulta que no tiene que administrar la fusión usted mismo con (a); fusionar comandos de rama a troncal funciona bien, usando mergeinfo. El único pequeño "problema" es que mergeinfo en el enlace contiene la URL de la etiqueta con su revisión de creación, además de la información de revisión de la sucursal. Probablemente eso no es lo que quieres. Por otro lado, podría no ser considerado un problema significativo. [No he experimentado con la reintegración; solo una fusión 'ordinaria'.] Para mí, (b) se siente como la manera correcta de hacer las cosas, pero todavía no estoy muy convencido de que (a) esté realmente equivocado como tal. – Rhubbarb

0

En respuesta parcial a mi propia pregunta:

(a) tiene la ventaja de la rama siendo más evidente asociado con una versión particular o liberar candidato

(b) tiene la ventaja de la revisión del tronco asociado con la rama que es más obvia inmediatamente

De cualquier manera, es posible establecer una de la otra, aunque es quizás más fácil acceder al enlace desde la etiqueta en lugar de encontrar la etiqueta desde el enlace. Por lo tanto, a este respecto, (a) parece preferible.

Además: al fusionar el mantenimiento de ramas en el tronco, (b) parece ser la opción más natural.

Me gustaría recibir más opiniones, ideas o enlaces.

4

En mi opinión, tomaría la ruta (a) si tengo la intención de agregar y aplicar parches al proyecto principal en una fecha posterior e ir (b) Si tengo la intención de desarrollar algo paralelo.

Cuestiones relacionadas