Pregunta

Estoy convirtiendo del repositorio CVS existente al repositorio SVN.El repositorio CVS tiene pocas ramas y me gustaría cambiar el nombre de las ramas durante la conversión.

La conversión deseada es así:

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

Es decir, CVS HEAD se convierte en una rama normal y CVS BranchA se convierte en una troncal SVN.

Tanto el repositorio CVS como el SVN estarán en la misma máquina Linux.

¿Como se puede hacer esto?

También puede ser suficiente la conversión donde CVS rama A se convierte en troncal SVN y todas las demás ramas CVS se ignoran.

¿Fue útil?

Solución

Estoy especialmente interesado en preservar el historial de confirmaciones.Si cambio el nombre y muevo las ramas en SVN después de la conversión, ¿se conservará el historial?

Sí.Subversion también realiza un seguimiento de los cambios en la estructura del directorio y todo el historial de versiones se conserva incluso si se mueve un archivo en el árbol.

Recomiendo convertir el repositorio con cvs2svn, incluidas ramas y etiquetas.Una vez que el repositorio esté en Subversion, puede mover las ramas y etiquetas como desee.Esto también mantiene el historial de las etiquetas y ramas reales a las que se les cambia el nombre, lo que puede resultar interesante en un contexto histórico más adelante.

Otros consejos

Ha pasado un tiempo desde que hice una conversión CVS -> SVN, y probablemente incluso más desde que hice una con una estructura de rama no trivial.Dado que SVN puede moverse por los árboles de directorios con bastante facilidad, primero puede realizar toda la conversión y luego ordenar la estructura troncal/ramas por completo dentro de SVN.

Si llega a ese punto y se mueve por árboles de directorios completos dentro de SVN, probablemente sea mejor si se compromete después de cada paso de cambio de nombre/movimiento del árbol.Sólo algo para tener en cuenta.

Las ramas de Subversion son directorios, por lo que puede mover las ramas una vez finalizada la importación y no se perderá ningún historial.

Alguna información adicional para respaldar la respuesta aceptada:

cvs2svn no permite la conversión de troncal a rama o de rama a troncal

por lo que mover cosas una vez que te hayas convertido a svn es la mejor manera de hacerlo.

Es posible mover los directorios troncales y de sucursales después de la conversión, pero esto requeriría una confirmación SVN posterior a la conversión explícita que permanecerá en su historial SVN, lo que hará que la exploración del historial sea un poco más complicada.

Pero de hecho puedes decirle a cvs2svn que almacene el tronco y las ramas en las rutas SVN que desees usando el comando --symbol-hints=symbol-hints.txt opción de línea de comando o (si está utilizando un archivo de opciones para su conversión) el SymbolHintsFileRule('symbol-hints.txt') regla de estrategia de símbolo, donde symbol-hints.txt es un archivo que contiene líneas como la siguiente:

. .trunk. trunk branches/branchX .
. branchX branch trunk .

Tenga en cuenta que algunos mensajes de confirmación generados automáticamente por cvs2svn (por ejemplo, para la creación de la rama) mencionarán el nombre de la rama original.

Aunque es posible moverse entre ramas después de realizar la conversión, puede ser mejor configurar el archivo de configuración cvs2svn para especificar exactamente el nombre que desea para cada una de sus ramas existentes.Uno de los beneficios de esto es que FishEye comprenderá mucho mejor el resultado.

Estoy especialmente interesado en preservar el historial de confirmaciones.Si cambio el nombre y muevo las ramas en SVN después de la conversión, ¿se conservará el historial?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top