Pregunta

Tengo un " docs " carpeta en un repositorio de Subversion llamado " proyecto " ;. Llegué a la conclusión de que realmente debería guardarse en un repositorio de Subversion separado llamado " project_docs " ;.

Me gustaría mover el " docs " carpeta ( y todas sus revisiones ) a " project_docs " repositorio. ¿Hay alguna manera de hacer esto?

¿Fue útil?

Solución

Si tiene acceso al repositorio en sí (no una copia de trabajo), debería poder volcar el repositorio actual, filtrarlo para incluir solo información sobre la carpeta de documentos y cargarlo en el otro repositorio.

Sería algo como esto:

svnadmin dump /svn/old_repos > ./repository.dump
svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./repository.dump > ./docs_only.dump
svnadmin load /svn/new_repos < ./docs_only.dump

Sin acceso al repositorio, no puede mantener el historial de revisiones y debe conformarse con copiar los archivos en el nuevo repositorio y cometerlos.

Otros consejos

svndumpfilter tiene un defecto grave: si un archivo o ruta se copió de una ruta que está filtrando a una que está filtrando, svndumpfilter no podrá completar el historial y el trabajo fallará.

Puede usar svndumpfilter2 si tiene este problema.

Esto se discute en la documentación de SVN. Consulte la sección Mantenimiento del repositorio en svndumpfilter ... Describe específicamente cómo descargar proyectos de un repositorio central y moverlos a repositorios nuevos e independientes.

No creo que puedas hacerlo de forma remota (es decir, sin una copia local). Pero esto debería funcionar: svn export la carpeta del servidor original, luego svn add a su nuevo repositorio.

Me gusta:

$ svn checkout svn://example.net/newrepo .
$ svn export svn://example.com/oldrepo/mydir ./mydir
$ svn add ./mydir; svn commit

Edit: D'oh, esto deja caer la historia. Utilice svnadmin como Samuel describe .

Para referencia futura:

La documentación de SVN informa claramente:

Si planea editar manualmente el archivo de volcado para eliminar un directorio de nivel superior, asegúrese de que su editor no esté configurado para convertir automáticamente los caracteres de fin de línea al formato nativo (por ejemplo, \ r \ n a \ n), ya que el contenido no estará de acuerdo con los metadatos. Esto hará que el archivo de volcado sea inútil.

Utilice sed o Vim para sustituir el directorio de nivel superior, pero este nombre de directorio también estaba contenido dentro de un archivo de proyecto !!!! Esto provoca un error de suma de comprobación de carga de SVN.

Entonces, cuando realice esta operación, no haga sustituciones de cadenas con solo el nombre de la ruta.

Sustituir & # 8220; Node-path: old_path & # 8221; con & # 8220; Node-path: new_path & # 8221 ;. Consulte el capítulo 5 del libro SVN & # 8220; administración de repositorio & # 8221; para más detalles.

Intenté usar la respuesta aceptada, pero tenía un gran repositorio y quería exportar un pequeño directorio, y no podía permitirme volcar todo el repositorio.

Por lo tanto, solo exporté las revisiones donde cambió mi directorio (Esto puede no funcionar si el directorio que desea exportar tiene referencias a otros lugares en su repositorio).

svn log URL_to_docs | awk '/^r/{gsub(/^r/,"",$1);print $1}' > revisions.txt
#tac for revisions in reverse (oldest revision first)
tac revisions.txt | while read line; do svnadmin dump /svn/old_repo -r$line >> ./docs_revisions.dump ; done

#You don't have to filter if you commited only files in your directory docs in your exported revisions
svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./docs_revisions.dump > ./docs_only.dump

svnadmin load /svn/new_repos < ./docs_only.dump

Debe reemplazar la URL de su repositorio ( URL_to_docs ), la ubicación en el servidor ( / svn / old_repo ) y la ruta a los documentos en el repositorio ( ruta / a / docs )

Puede editar fácilmente su docs_only.dump si desea cambiar la ubicación de su directorio de documentos en su nuevo repositorio.

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