2010-12-08 18 views
5

Estoy trabajando con una configuración de svn a la que no estoy acostumbrado y necesito fusionar el nuevo código de una rama a otra.fusionar 2 ramas de svn juntas

No hay ningún código en la carpeta del tronco, así que no sé si debo actualizar el tronco del código y actualizar la segunda rama, O si hay una manera de simplemente actualizar una rama a la otra. Mi último recurso será actualizar el código manualmente.

¿Alguna idea de cuál es la mejor ruta aquí? Estoy haciendo todo desde una terminal.

Respuesta

7

No No actualice manualmente. Por supuesto, la dificultad dependerá de cuán cerca estén esas ramas.

Siempre puede realizar cambios de una rama a otra. Digamos que tiene dos ramas llamadas branch1 y branch2 y desea fusionar branch2 con branch1.

Digamos que está en BRANCH1 (prueba el funcionamiento en seco primero para ver si da lugar a conflictos)

svn merge -r LAST_MERGED_REVISION:HEAD_REVISION --dry-run url/to/branches/branch2 . 

svn merge -r LAST_MERGED_REVISION:HEAD_REVISION url/to/branches/branch2 . 
svn status | egrep '^C|^.C' <---Manual intervention is required for conflicts 
svn update 
svn ci -m "Merge changes from branch2" 

y se puede cerrar BRANCH2

svn merge --reintegrate url/to/branches/branch2 
svn update 
svn ci -m "Merged branch2 to branch1" 

Esto puede fallar en el caso de las ramas son muy divergentes

+0

Parece que esto va a funcionar, aunque tengo conflictos de árbol en archivos más antiguos que no creo que haya cambiado. ¿Alguna idea de cómo solucionarlos? Los archivos tendrían cambios muy pequeños – wajiw

+0

@wajiw: ¿Has probado la carrera en seco? Esta es una buena noticia, si solo hay cambios menores en algunos archivos. Algunos de ellos pueden resolverse manualmente después de la fusión automática y resolverlos usando el comando svn resolve. Pero haga esto solo después de haber inspeccionado el motivo de la falla de fusión. – pyfunc

+0

yup, que funcionó muy bien. utilizado 'svn resolve --accept working -R.' para resolver los conflictos porque deberían haber estado trabajando en primer lugar. ¡Gracias! – wajiw

1

Dependiendo de la versión de subversión que esté utilizando, le recomiendo que utilice svnmerge, o merge tracking support de Subversion incorporado. En cualquier caso, es posible fusionar de una rama a otra, sin usar el tronco (suponiendo que las ramas tengan algún antecesor relativamente cercano).