tag - Copia SVN entre repositorios con historial
tag svn (5)
La forma de lograr esto típicamente es el comando svnadmin dump
. Si no tiene acceso a svnadmin, le preguntaría a la persona que lo hace si pueden proporcionarle un vertedero. Esto hará que el proceso de importación sea mucho más fácil también.
¿Estás en un repositorio compartido actualmente? Esto podría hacer que la persona que posee el repositorio se preocupe de darte un tugurio, ya que será una copia de todo el repositorio, no solo de tu parte.
Uno de mis compañeros de equipo ha preguntado si es posible exportar de un SVN a otro, todo mientras se mantiene el historial.
Para mí, esto parece ser una solicitud común.
Entonces: ¿Es posible migrar entre repositorios SVN mientras se mantiene el historial?
Es importante tener en cuenta que no tenemos acceso svnadmin en el origen, pero sí lo tenemos en el destino.
Si esto se reduce a simplemente verificar cada revisión de la fuente y registrarla en el destino, estaríamos de acuerdo con eso, siempre que haya un proceso automatizado para eso.
EDIT: olvidé mencionar que el repositorio de destino está en Windows.
Puede usar git-svn (o tal vez otro sistema SCM) para realizar esta tarea.
Los pasos serían:
1. Get a git svn clone of each repository:
git svn clone <SVN-REPOSITORY-FROM> source-repo
git svn clone <SVN-REPOSITORY-TO> dest-repo
2. Create patches to be imported:
cd source-repo/
export commitFrom=`git log --pretty=%H | tail -1`
git format-patch -o /tmp/mergepatchs ${commitFrom}..HEAD .
3. Import the patches
cd dest-repo/
git am /tmp/mergepatchs/*.patch
Referenciado: http://blog.neutrino.es/2012/git-copy-a-file-or-directory-from-another-repository-preserving-history/
Si solo necesita un repositorio de control de versiones con conjunto de cambios completo, puede usar bzr con el complemento bzr-svn. Cuando finalice la compra de un svn repo, todo se sincronizará.
Tenía una necesidad similar (por lo tanto, visité esta página) y terminé escribiendo mi propio programa para hacer el trabajo. Pensó que la herramienta podría ser útil para otros que todavía están buscando una solución:
- La herramienta no necesita acceso de administrador al repositorio de origen.
- Admite add / delete / copy / move, preserva la propiedad del nodo (por ejemplo, svn: ignore, svn: external) y la propiedad de revisión (es decir, obtienes el autor y la fecha / hora correctos).
- También puede copiar incrementalmente nuevas revisiones.
- Tiene una GUI y una utilidad de línea de comando.
Si alguien está interesado, compruébalo here
[ Editar : La respuesta original a continuación es de SVN anterior a la versión 1.7, y esta era la mejor manera de resolver el problema (aunque no es el caso de uso principal de svnsync
). En SVN 1.7 client o posterior está la herramienta svnrdump
que hace más directamente lo que estás tratando de lograr)]
use svnsync para sincronizar el origen con el destino (necesita acceso de administrador al repositorio de destino o al menos una forma de agregar ganchos, pero no acceso especial al repositorio de origen). Si el destino ya tiene revisiones, sincronice el origen con un repositorio temporal y luego use svn-merge-repos.pl
para fusionar los dos repositorios locales.