svn - tortoise - ¿Puedo mover un repositorio de Subversion existente a un nuevo repositorio principal(y conservar el historial)?
tortoise svn server (4)
Debería poder volcarlo, luego volver a cargarlo en un subdirectorio de un nuevo repositorio:
svnadmin dump http: // oldrepo / > mydump
svnadmin load --parent-dir mi / nueva / carpeta http: // newrepo / <mydump
Actualmente tengo un repositorio de nivel raíz configurado para cada proyecto, así:
Project1
Project2
Project3
Project5
Project5
Me gustaría reorganizar esto para que en lugar de un repositorio para cada proyecto individual, solo tenga uno para cada agrupación lógica, y luego los proyectos serían simplemente carpetas dentro de esos ''repositorios de grupo'', por ejemplo:
WebSites
Project1
Project2
DesktopApps
Project3
Libraries
Project4
Project5
¿Es esto posible a la vez que conserva el historial de los repositorios existentes? He buscado bastante, pero todo lo que puedo encontrar es información sobre mover carpetas dentro del mismo repositorio y mover las carpetas de un repositorio a un nuevo repositorio.
Es solo para cosas personales de todos modos, así que no es el fin del mundo si es solo un ''no'' directo, pero sería bueno saberlo, así que no me estoy golpeando la cabeza contra la pared :)
Puede usar sastre para importar las revisiones al nuevo repositorio. Comprueba el código del repositorio anterior una revisión tras otra y lo confirma en el nuevo repositorio.
Esto también se puede usar para convertir el historial de un tipo de sistema de control de versiones en otro.
Un archivo de proyecto de sastre se vería así:
[DEFAULT]
root-directory = /var/tmp/tailor
verbose = true
[myproject]
source = svn:oldrepo
target = svn:newrepo
start-revision = INITIAL
[svn:oldrepo]
repository = svn://oldhost.example.com/svnroot
module = trunk
subdir = repo-in
[svn:newrepo]
repository = svn://newhost.example.com/some/path
module = trunk
subdir = repo-out
Si este archivo se llama settings.cfg
, esto copiará /trunk
de la revisión de repositorio anterior por revisión a la nueva ubicación:
tailor --configfile=settings.cfg myproject
El repositorio de destino debe existir ya y probablemente debería tener un subdirectorio de trunk
vacío.
Dado que la respuesta aceptada es incompleta y no se ha corregido, así es cómo lo hace.
(1) El repositorio de origen es un repositorio de proyecto único, con directorio de nivel superior. Ve a tu antiguo servidor y crea un archivo de volcado:
[old-server]$ svnadmin dump /path/to/old-repo > foo.dump
(2) Su repositorio objetivo ya contiene dos proyectos, con los directorios de nivel superior bar
y baz
, y está en http://new-server/svn
. Ahora crea un nivel superior foo
adicional:
[client]$ svn ls http://new-server/svn/
bar/
baz/
[client]$ svn mkdir -m "Adding new foo project" http://new-server/svn/foo
[client]$ svn ls http://new-server/svn/
bar/
baz/
foo/
(3) En su nuevo servidor, el repositorio está en /path/to/new-repo
(que es a qué http://new-server/svn/
maps to). Tenga en cuenta que el svn mkdir
arriba no creó un nuevo directorio en /path/to/new-repo
; simplemente cambió la base de datos. Ir al nuevo servidor y
[new-server]$ svnadmin load /path/to/new-repo --parent-dir foo < foo.dump
Hecho, con historia completa. Ahora puedes ver a foo
como:
[client]$ svn co http://new-server/svn/foo foo
Si esta es la primera vez que hace un svnadmin
, puede encontrar que obtiene errores de permiso de archivo ( txn-current-lock
/ etc) si, por ejemplo, el repositorio es propiedad de apache
, y usted no está en el grupo apache
La solución más fácil es apache
grupo apache
.