2009-09-02 11 views
13

Esta es la situación: En una rama particular, algunos cambios se han fusionado en desde el tronco, así como las alteraciones de la rama se han fusionado volver en el maletero.Está fusionando una fusión de nuevo un problema en subversión?

La pregunta que tengo es la siguiente: ¿Cuál es, en todo caso, no la gestión de fusión en Subversion hacer si trato de combinar volver en el tronco de la rama de una revisión que era en sí misma sólo una combinación de de la tronco a la rama?

¿Esto causa problemas? Si es así, ¿qué tipo? ¿O debería ser una cosa perfectamente buena?

¿O la nueva fusión simplemente trata esos cambios como cualquier otro y simplemente intenta aplicarlos?

Respuesta

4

Esa es una situación en la que incluso el seguimiento de fusión de las versiones más nuevas de SVN no se puede manejar automáticamente. Por lo tanto, debe especificar las revisiones que desea fusionar nuevamente en el tronco manualmente y debe asegurarse de excluir las revisiones que se fusionan desde el enlace troncal a la sucursal.

Si intenta volver a cambiar los cambios que ya están presentes en la troncal, se tratarán como modificaciones normales. Esto conducirá a conflictos inevitablemente.

4

Depende en parte de la versión de svn que esté utilizando.

Pre 1.5, no había ningún seguimiento de fusión en absoluto, por lo que habría que fusionar las revisiones que quería de nuevo pulg La mayoría de las personas utilizaron un nombre de secuencia de comandos "svnmerge" para eso. Puede usar esto si lo desea, y marcar las revisiones que ya ha realizado como fusionadas. Después de eso, svnmerge le dará algo de ayuda para elegir las revisiones correctas y omitir las ya fusionadas.

1.5 (y posterior) le da algún seguimiento de fusión, pero todavía no tiene todas las funciones. En su caso particular (fusión de ambas formas), no creo que el seguimiento de svn pueda manejarlo. Es probable que deba fusionar manualmente cada revisión que desee.

Personalmente, cuando estoy en proyectos que usan svn, prefiero hacer que las ramas sean algo efímeras, y solo se fusionan de una manera (de tronco a rama) hasta la fusión final de rama a tronco. Una vez que he hecho eso, fusiono todo en el tronco y cierro la rama, o fusiono lo que quiero y cierro la rama. Casi nunca mantengo la sucursal viva, debido a posibles problemas de fusión (es fácil cometer un error).

2

Usando la versión 1.5 o posterior de la subversión, debe especificar la opción --reintegrate para fusionar svn para que las fusiones que son solo copias de las fusiones anteriores "al revés".

Tenga en cuenta que 1) Depende de usted saber cuándo debe utilizar esta opción 2) Será la última combinación de esa rama. Después de esta combinación, svn considerará que la rama está muerta y será necesario seguir trabajando para destruirla y volver a crearla.

Esto es directamente desde svn docs, aunque los documentos podrían usar una división más fina en subsecciones.