svn - tag - Subversion no puede fusionarse después de un movimiento
tag subversion (4)
Soy muy nuevo en Subversion, pero he usado otros sistemas de control de revisión como ClearCase durante años.
Mi jefe me pidió que arregle este proyecto para que pudiera construirse con Maven en lugar de Ant. Una de las cosas importantes que tenía que hacer era mover src/com
a src/main/java/com
, y mover test/com
a src/test/java/com
, lo cual hice usando el comando svn mv
. Asumí tontamente que, dado que usé los comandos de Subversion para mover los directorios, Subversion sabría que las cosas se habían movido. Y cuando fusioné mi rama en el tronco, pareció funcionar. Pero ahora alguien más acaba de terminar el trabajo en una rama que él bifurcó antes de mi trabajo. Así que vamos a fusionar sus cosas en el tronco, y básicamente Subversion parece pensar que "está bien, hizo cambios a src/com/foo/bar/baz.java
, pero ese directorio ya no existe, por lo que es irrelevante, por lo que descartarlo "en lugar de lo que esperaba, que era " bien, hizo cambios a src/com/foo/bar/baz.java
, pero src/com
se ha movido, así que necesito fusionarlo con src/main/java/com/foo/bar/baz.java
” .
¿Hay alguna forma de hacer que Subversion realice la gestión de la revisión, o voy a fusionar manualmente los cambios de este tipo durante los próximos dos días?
Acabo de tener el mismo problema y lo resolví con git . No quise fusionar varios módulos con svn merge -r N:M http://server/branch/foo/test/com src/test/java/com
para src/main
, src/test
y resources
.
Así que usé el git svn clone file:///some/repo -T trunk -b branches -t tags
. Así pude mantener git master sincronizado con svn trunk y fusionarlo con mi rama git . Cuando terminé, fusioné la rama git con git master y de allí a svn trunk .
Alguien intentó este software? xMerge
Este es un complemento para SmartSVN, pero parece que hace el truco. Si alguien lo está usando, le agradeceré que me envíe una revisión.
Esto suena como un problema de una sola vez. Le sugiero que use svn diff > /to/some/file.patch
(o diff normal) para guardar sus cambios en un archivo, luego aplíquelo en su tronco movido con el patch -p0 < /to/some/file.path
.
Para responder a su pregunta directamente:
¿Hay alguna forma de hacer que Subversion realice la gestión de la revisión, o voy a fusionar manualmente los cambios de este tipo durante los próximos dos días?
Deberías poder hacerlo un poco más fácil para ti.
Una cosa que puede hacer para aliviar algo del dolor (asumiendo un diseño de la siguiente manera)
/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com
Antes de mover src / com a src / main / java / com y test / com a src / test / java / com podría haber hecho:
cd $TRUNK
svn merge -r N:M http://server/branch/foo .
Lo que podrías 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 ayude a ahorrar un poco de tiempo.