Subversion no puede fusionar después de un movimiento
Pregunta
Estoy muy nuevo en Subversion, pero yo he utilizado otros sistemas de control de versiones como ClearCase durante años.
Mi jefe me pidió que solucionar este proyecto para que se podía construir con Maven en lugar de hormiga. Una de las cosas importantes que tenía que hacer era a mover src/com
a src/main/java/com
, y mover a test/com
src/test/java/com
, lo que hice con el comando svn mv
. Me tontos asumido que desde que utiliza comandos de Subversion para mover los directorios, que Subversion sería entonces saber que las cosas habían sido movidos. Y cuando me fundí mi rama en el tronco, que parecía funcionar. Pero ahora alguien acaba de terminar el trabajo en una rama que se bifurca antes de mi trabajo. Así que vamos a fusionar sus cosas en el tronco, y, básicamente, Subversion parece pensar “ok, se realizan cambios en src/com/foo/bar/baz.java
, pero ese directorio no existe nada más, por lo que es irrelevante, por lo que se descarta que” en lugar de lo que esperaba, que era “ok, se realizan cambios en src/com/foo/bar/baz.java
, pero src/com
se ha movido, por lo que necesitan para combinar eso en src/main/java/com/foo/bar/baz.java
” .
¿Hay una manera de hacer Subversion hacer la gestión de revisiones, o voy a ser manualmente la fusión de cambios de este tipo durante los próximos dos días?
Solución
Para responder a su pregunta directamente:
¿Hay una manera de hacer Subversion hacer la gestión de revisiones, o voy a ser manualmente la fusión de cambios de este tipo durante los próximos dos días?
Usted debe ser capaz de hacer que sea un poco más fácil para ti.
Una cosa que usted puede hacer para aliviar algo del dolor (suponiendo una distribución de la siguiente manera)
/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com
Antes de que movió src / com a src / main / java / com prueba y / com a src / test / java / com que podría haber hecho:
cd $TRUNK
svn merge -r N:M http://server/branch/foo .
Lo que podría hacer ahora es:
cd $TRUNK
svn merge -r N:M http://server/branch/foo/src/com src/main/java/com
svn merge -r N:M http://server/branch/foo/test/com src/test/java/com
Espero que esto ayuda a ahorrar algo de tiempo.
Otros consejos
Esto suena como un problema de una sola vez. Sugiero que usted podría utilizar svn diff > /to/some/file.patch
(o diff normal) para guardar sus cambios en un archivo, y luego aplicarlo en su tronco movido con patch -p0 < /to/some/file.path
.
Cualquier persona trató este software? xMerge
Este es plugin para SmartSVN pero parece que hacer el truco. Si alguien lo está utilizando estaré agradecido si me envía revisión de la misma.
Sólo tenía el mismo problema y lo resolví con git . No quería fusionarse con módulos serveral svn merge -r N:M http://server/branch/foo/test/com src/test/java/com
para src/main
, src/test
y resources
.
Así que utilicé git svn clone file:///some/repo -T trunk -b branches -t tags
. Como no pude mantener master git en sincronía con tronco SVN y fusionarla con mi git branch . Cuando terminé, me fundí el git branch a master git y de allí a tronco SVN .