2010-02-25 8 views
34

pregunta relacionada: Moving repository trunk to another’s branch (with history)SVN mover solo directorio en otro depósito (con historia)


Sé que uno puede volcar una completa repositorio SVN con la historia y cargarlo en una definida por el usuario (sub) directorio del repositorio de destino mediante:

// in source repo 
> svnadmin dump . > mydumpfilename 

// in destination repo (backslashes because I'm using Windows) 
> svnadmin load . < mydumpfilename --parent-dir some\sub\directory 

Pero esto va a importar el repositorio completo en sub-directorio del repositorio de destino. Lo que quiero es definir un subdirectorio en el repositorio fuente que debe exportarse. Algo así como svnadmin dump . --source-path old\sub\dir > mydumpfilename.

¿Cómo puedo lograr eso? Si TortoiseSVN puede hacer eso, por favor decirlo;)


SOLUCIÓN: Gracias a la respuesta de Tim Henigan, aquí es la forma correcta de hacerlo:

// execute in destination repo 
svndumpfilter include source\sub\dir < mydumpfilename | svnadmin load . --parent-dir destination\sub\dir 

Esperamos que ayude a los demás, también ...

+0

creo que no se puede hacer eso, aparte de copiar manualmente y volver a aplicar todos los cambios, como revisiones de subversión son repositorio de ancho, por lo que pasar un solo directorio con la historia en realidad no se aplica en este caso. es decir, no se revisan los archivos individuales, sino que se revisa todo el repositorio y se almacenan las diferencias de todo el repositorio. – Zenon

+0

Gran pregunta, gracias. – richo

+2

En realidad, esto es solo la mitad de la historia. También debe eliminar el directorio en el repositorio de origen reconstruyéndolo con 'svndumpfilter exclude source \ sub \ dir', por supuesto, consulte http://stackoverflow.com/questions/205296/delete-file-contents-from- svn-history – Tino

Respuesta

20

salida svndumpfilter y esta sección en Repository Maintenance.

Una vez que tenga un archivo de volcado para todo el repositorio antiguo, puede usar svndumpfilter para extraer solo la parte que desea.

No conozco una forma de hacer esto con TortoiseSVN.

+0

Muy buena solución, funciona perfectamente. ¡Muchas gracias! – AndiDog

+0

Y si está confundido por qué no está funcionando en su máquina local, es porque se supone que 'svndump' se ejecuta en el origen del repositorio real. Use 'svnrdump' en su lugar - http://stackoverflow.com/questions/8866035/unable-to-do-an-svn-dump-error-e720002-and-format-errors – drzaus

0

Un poco tarde para la fiesta, pero ... si ha sacado copias locales de ambos repositorios usando TortoiseSVN, puede copiar un directorio de uno a otro con historial haciendo clic derecho en el directorio (o archivo) desde Repo1 y arrastrándolo a Repo2. Al soltar el ratón obtendrá esta lista de opciones:

enter image description here

"SVN Exportar artículos versionados aquí" copiará (recursivamente) con la historia.

+0

No estoy obteniendo historial, ni lo estoy si agrega los archivos al repositorio, ¿qué es lo que me estoy perdiendo? – drzaus

+0

@drzaus: después de mover los elementos localmente, debe enviarlos al repositorio. Hasta que lo haga, SVN no registrará los elementos ni el historial en el nuevo repositorio. – noisiveRevision

+0

Solo para asegurarme de que entiendo: después de exportar, necesito agregar manualmente todos los archivos no versionados que acabo de exportar, y luego de confirmarlos SVN habrá incluido su historial. – drzaus

Cuestiones relacionadas