2010-07-22 7 views
48

Por this old question, utilizando SVN 1.5, la reintegración de una sucursal varias veces es problemática y debe evitarse.Reintegración de la sucursal de Subversion en v1.6

Se ha dicho algo así como: "Este es un problema conocido y debería solucionarse en SVN 1.6". ¿Era ese el caso? ¿Esta arreglado? ¿Puedo reintegrarme varias veces?

+0

Seamos más específicos. A los fines de esta pregunta, no me importa si debería estar reintegrando. Esa es una pregunta diferente. Por ahora, quiero saber cómo puedo reintegrarme varias veces. –

+0

Sí, se corrigió en Subversion 1.8. – bahrep

Respuesta

56

Para fusionar un tema rama en el maletero repetidamente: Haga lo siguiente en cada combinación.

  1. svn merge --reintegrate <topic> <trunk>, como lo haría normalmente. (=> rM)
  2. svn merge --record-only -c M ^/<trunk> <topic>. Tenga en cuenta la opción record-only.

Paso 2 dice esencialmente la rama tema a considerar la fusión cometer (revisión M, desde el paso 1) parte de su historia. Esta fusión-revisión es la que generalmente causa problemas durante la reintegración; svn intenta deshacer rM al integrar tema por segunda vez.

Por lo tanto, las obras de reintegración repetidas, simplemente no de forma automática. :)

Finalmente encontré esta solución a través de un enlightening commit message to the svn source y el correspondiente test (busque "def multiple_reintegrates"). Este es un "truco inteligente" descubierto y utilizado por svn-devs con las versiones actuales. Incluso se ha agregado al more recent documentation. El resultado aún no es tan bueno como las propiedades de fusión de un DVCS, pero al menos es funcional.

La única desventaja general (según un open issue a partir del 2 de junio de 2010) es que aparentemente la salida svn log -g es desordenada. Supongo que este es el riesgo.

+3

Finalmente agregaron esto a los documentos: http://svnbook.red-bean.com/nightly/en /svn.branchmerge.advanced.html#svn.branchmerge.advanced.reintegratetwice –

+1

Holy crap. Esa explicación habría sido mucho más fácil de analizar. Lo he agregado a la respuesta. A + –

+0

¿Puede manejar esto unir desde el tronco a la rama (y viceversa)? Es decir, --grabar-- solo el tronco-> rama también se fusionan? – JeeBee

1

Si bien el 1.6 realmente solucionó los problemas con el seguimiento de combinación, no creo que pueda volver a utilizar una rama integrada.

Pero esto no es un problema. Como la rama se integró completamente en el tronco, simplemente elimínela y cree una nueva rama (con el mismo nombre) en su lugar.

+2

¿Alguna referencia? –

+0

@Andres: ¿Cómo propones que encuentre referencias de que cierta cosa (la capacidad de reintegrarse repetidamente) no existe? El libro SVN 1.5 dice que la reintegración hace que una rama sea inútil (al final de http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.branchemerge.basicmerging.stayinsync). Gratis para navegar por las informaciones de lanzamiento para SVN 1.6 (http://subversion.apache.org/docs/release-notes/1.6.html y http://svn.apache.org/repos/asf/subversion/tags/1.6 .12/CHANGES) para cualquier cosa que haga que esta información quede obsoleta. – sbi

+2

"No creo que puedas ..." no es muy creíble. Un ejemplo, una referencia actualizada, algo que no es un libro en v1.5 ... –

1

Sí, puedes. El problema que preguntas fue resuelto en Subversion 1.8.

Comenzando con SVN 1.8, --reintegrate opción es desuso y reintegrar fusiones se realizan ahora automáticamente (o automágicamente:)). Ver Subversion 1.8 Release Notes y leer actualizada SVNBook 1.8 | Reintegrating a branch capítulo:

Si decide no eliminar su rama después de la reintegración al tronco puede seguir para realizar sincronización se fusiona en el tronco y luego reintegrar a la rama de nuevo.Si hace esto, solo los cambios realizados en su rama después de la primera reintegración se fusionan en el enlace troncal.

...

Sólo Subversion 1.8 soporta esta reutilización de una rama de la característica. Las versiones anteriores de requieren un manejo especial antes de que una rama de características pueda ser reintegrada más de una vez. Ver la versión anterior de este capítulo para más información: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

IMPORTANTE:se debería actualizar el cliente y el servidor de Subversion si todavía utiliza Subversion 1.7 o más. La versión actual y mejor de SVN es 1.9 en el año 2016. No hay una razón real para utilizar versiones de Subversion muy antiguas como 1.5, 1.6 o incluso 1.7. ¡Hubo numerosas mejoras en el lado del cliente y del servidor desde la versión 1.6!

Cuestiones relacionadas