2009-05-18 10 views
21

¿Se debe eliminar una rama de entidad después de que se haya fusionado (reintegrado) de nuevo al tronco?¿Es seguro usar una rama de característica de subversión después de reintegrar-fusionar a troncal?

Prefiero fusionar constantemente los cambios de mi rama de características. Creo que esto reduce los conflictos al mínimo. Sin embargo, entiendo que una vez que use la fusión de reintegración en el enlace troncal, se debe eliminar una rama de características.

¿Es así? ¿Por qué? ¿Qué puedo hacer para eludir esto?

Actualización Estoy preguntando por problemas técnicos que provienen de la herramienta, no por "problemas de metodología". Tengo la intención de seguir trabajando en la rama de características después de la fusión.

Actualización La respuesta superior de hecho especifica un procedimiento bastante complejo (fusionar, eliminar & relanzamiento). ¿Hay alguna manera fácil de lograr esto en TortoiseSVN? ¿No debería haber?

Respuesta

24

editar: Parece que este problema se ha corregido en SVN 1.8. El section on basic merging from the SVN 1.8 book se ha actualizado para indicar que está bien reutilizar una rama de características. La respuesta a continuación solo es relevante para versiones anteriores de SVN.


Desde el apartado de basic merging en el libro de SVN:

En Subversion 1.5, una vez a la fusión --reintegrate se realiza de rama en el tronco, la rama no es útil más larga para mayor trabajo. Es que no puede absorber correctamente los nuevos cambios de troncal , ni puede ser correctamente reintegrado al tronco nuevamente. Por esta razón, si quiere seguir trabajando en su sucursal característica, se recomienda destruirlo y volver a crearlo del tronco:

Este es todavía el caso en el SVN 1.6 y 1.7.

excellent article on reflective merges explica por qué exactamente no puede o no debe reciclar una rama de características.Resumen de los puntos más importantes:

  • puede hacer el trabajo para resolver los conflictos cuando la reintegración con el tronco
  • La reintegración se comprometen en el maletero por lo tanto, contiene tanto los cambios procedente de la rama de la característica y conflicto trabajo de resolución
  • Sin embargo, la subversión no le ayudará fusionar este trabajo de resolución de conflictos de nuevo a la rama de características. Simplemente mira mergeinfo y piensa "estos cambios originalmente vinieron de la rama de características, no es necesario fusionar de nuevo a su origen".

La eliminación de la rama de características y el reordenamiento es económica y evita todo este problema.

+0

El enlace al artículo está roto. Aquí está la URL que funciona: http://blogs.collab.net/subversion/2008/07/subversion-merg/ –

+0

@bob: corregida, gracias –

+1

@WimCoenen acerca de su edición, ¿necesito tener SVN 1.8 client + server? o el cliente solo es suficiente? –

-1

Todo esto depende de su opinión personal y del número de personas que se fusionan en el maletero.

Si tiene mucha gente fusionándose, entonces es mejor fusionar una sola bifurcación una vez que haya terminado y luego eliminarla (puede acceder a ella siempre volviendo a la última revisión donde existió). Si intenta fusionarse continuamente en esta situación, se confundirá.

Sin embargo, si no tiene muchas subdivisiones, y está utilizando subversión 1.5+, puede salirse con la suya, y puede ayudar a evitar conflictos de fusión.

Por supuesto, si su "troncal" se utiliza como un repositorio beta/release candidate/release, entonces no debe hacer esto.

8

Hacemos esto a menudo (SVN 1.5 y superior). Solo debe asegurarse de no volver a introducir esos cambios en la sucursal.

Para hacer eso, simplemente haga una serie de revisiones que se fusionan desde el tronco hasta la rama. Especifique la revisión en el tronco que hizo la reintegración de la rama y márquela como "Solo registrar la combinación" desde la revisión de troncal a la rama.

Una vez que hagas eso, deberías estar listo.

Editar
El punto de la wcoenen trae desde el artículo acerca de los conflictos es válido. Si no sincroniza los cambios de troncales en la rama antes de realizar la reintegración, tendrá el problema de conflicto. Mantenemos la rama sincronizada y no hemos tenido problemas para continuar reutilizando la rama después de múltiples reintegraciones.

Editar 2

mantener un reintegrado Branch Alive (http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html)

Hay una alternativa a la destrucción y re-crear una rama después de la reintegración. Para comprender por qué funciona, debe comprender por qué la rama inicialmente no es apta para un uso posterior después de que se haya reintegrado.

+0

Según tengo entendido, la recomendación de eliminar la rama de características después de la reintegración es independiente de si se mantienen las ramas sincronizadas o no. – ripper234

+0

Estoy de acuerdo en que es la recomendación. Solo digo que lo hemos estado haciendo de esta manera sin problemas. –

Cuestiones relacionadas