tutorial tortoise subir repositorio proyecto espaƱol con como clonar archivos svn version-control repository svndump

tortoise - Mover datos de repositorios SVN con historial como subcarpetas en otro repositorio



tortoise svn server (2)

Tengo algunos repositorios, y necesito transformar el contenido de cada uno en subcarpetas de otro repositorio preservando su registro de historial ... ¿Cómo puedo hacer eso?


Después de leer su pregunta, decidí crear una utilidad para usted que resolvería este problema. La utilidad se basa en la biblioteca SVNKit y se encuentra aquí https://sourceforge.net/projects/svnkitfilter

Solo corre

$ svnadmin create svn.repo $ svnkitfilter SRC_URL_1 file:///path/to/svn.svn --prefix prefix/for/repository1 $ svnkitfilter SRC_URL_2 file:///path/to/svn.svn --prefix prefix/for/repository2 ... $ svnkitfilter SRC_URL_N file:///path/to/svn.svn --prefix prefix/for/repositoryN


Hay dos formas de lograr la tarea. Según la distribución del servidor de Subversion y la complejidad de la tarea, puede encontrar una de ellas más fácil o más conveniente que la otra.

Filtrar el historial del repositorio con la herramienta svndumpfilter

La solución es bastante complicada porque el filtrado del historial del repositorio de Subversion funciona en función de las rutas que especifique para incluir o excluir en un resultado de volcado del repositorio. En resumen, debes hacer lo siguiente:

  1. Vuelque sus repositorios actuales con svnadmin dump ,
  2. Filtra solo la ruta de repositorio necesaria en los volcados con svndumpfilter ,
  3. Cargue los volcados filtrados en otro repositorio con la svnadmin load .

También puede usar la herramienta svnrdump (existe en SVN 1.7 y posterior) para realizar el proceso de volcado y carga de forma remota. Ver svnrdump dump y svnrdump load .

Le recomiendo leer los siguientes artículos del SVNBook relacionados con el proceso:

  1. Filtrar el historial del repositorio
  2. svnadmin dump
  3. svnadmin load
  4. svnrdump dump
  5. svnrdump load
  6. svndumpfilter

Supongamos que tiene repositorio C: / Repositories / REPO y carpeta / trunk / abc en este repositorio. Consulte los pasos de muestra para mover la carpeta / trunk / abc a otro repositorio C: / Repositories / REPO2 .

  1. Asegúrese de que todos los commits que afectan a la ruta / trunk / abc y sus descendientes NO afecten a ninguna otra ruta. Por ejemplo, no hay ningún compromiso que agregue archivos a / trunk / abc y / another_folder al mismo tiempo o copie archivos de / another_folder a / trunk / abc, etc.

  2. Crear volcado del repositorio REPO:

    svnadmin dump C:/Repositories/REPO > REPO.dump

  3. Elimine las rutas innecesarias del archivo REPO.dump:

    svndumpfilter include /trunk/ABC < REPO.dump > filtered.dump

  4. Cree una carpeta vacía / cargada en el repositorio C: / Repositories / REPO2 .

  5. Cargar volcado a esa carpeta:

    svnadmin load --parent-dir /loaded C:/Repositories/REPO2 < filtered.dump

¡Eso es!

Replicación de repositorio con la herramienta svnsync

La solución también es engañosa, sin embargo, una filtración de repositorio compleja puede ser un poco más conveniente con ella que el enfoque descrito anteriormente.

El enfoque es replicar el repositorio con svnsync después de configurar las reglas de autorización basadas en rutas que niegan el acceso de lectura a las rutas que deben filtrarse desde el historial del repositorio.

A diferencia de svndumpfilter , svnsync traducirá automáticamente las operaciones de copia con una ruta fuente ilegible en adiciones normales, lo que es útil si el historial que implica operaciones de copia debe filtrarse.