2012-02-13 11 views
12

quiero mover parte de mi repo SVN fuera del sitio, en una instancia AWS & estoy siguiendo esta página (Repository Maintenance)svndumpfilter falla con "ruta de origen de la copia no válida ..." Error

he tomado un dump de la repo conjunto (comandos de Windows):

  • svnadmin dump c:\repo > all_repo

a continuación hay que filtrarla, para incluir sólo el proyecto me interesa (que se llama "M1").

  • type all_repo | svndumpfilter include M1 --drop-empty-revs > m1

Sé que esto es correcto, como lo he hecho en algunos de los ya otros proyectos.


En este proyecto, se rompe con el error indicado en el título de esta publicación. La formulación exacta es:

svndumpfilter: camino de fuente de la copia no válida '/ personal/Richard/M1_Config'

El proceso intentó escribir en un tubo inexistente.

La carpeta a la que se refiere el error es una utilidad de configuración que escribí y presenté en mi carpeta personal, y no está en la carpeta raíz/m1 ... en absoluto. No quiero incluirlo en el archivo filtrado, pero no sé cómo indicarlo a los comandos svn.

  1. ¿Cómo puedo filtrar correctamente para toda la carpeta M1 y sus elementos secundarios, mientras excluyo por completo la carpeta Personal/Richard/M1_Config?
  2. ¿Cómo puedo estar seguro de si el archivo exportado contiene la información correcta para recrear correctamente la carpeta M1 en el SVN remoto?

Respuesta

14

En algún punto /Personal/Richard/M1_Config se ha copiado a la ruta M1. El mensaje de error es decir que no puede realizar la copia debido a que la fuente ha sido filtrada. Verifique la revisión de la que svndumpfilter se quejó.

Debe incluir la ruta /Personal/Richard/M1_Config incluso si no la quiere en la importación final. También debe incluir las rutas /Personal/Richard y /Personal ya que cada una reside en su padre.Su comando debe ser:

type all_repo | svndumpfilter include M1 "/Personal" --drop-empty-revs > m1 

Si tiene otros caminos, por ejemplo /Personal/James que no son necesarios y desea excluirlos continuación, puede ejecutar una segunda svndumpfilter despojarlos:

type m1 | svndumpfilter exclude "/Personal/James" --drop-empty-revs > m1_2 
+0

¿Hay alguna manera única de descubrir qué partes de bruja deben incluirse? Estoy trabajando con intento y error en este momento. –

+0

Puede buscar a través de los conjuntos de cambios y buscar 'copiar-de-ruta' que afectan la ruta de interés. Puede hacer esto mediante una búsqueda de texto a través de un archivo de volcado, o quizás con svnlook. – Craig

16

he intentado al menos 4 aplicaciones diferentes para hacer eso, la única que realmente trabajaron estaba usando svndumpfilterIN:

svnadmin dump c:\repo > all_repo 
svndumpfilter.py all_repo --repo=c:\repo --output-dump=m1 include M1 

Aquí está mi full answer on linux.

Aquí es lo que he intentado y no funcionó :

+0

En serio, gracias por la publicación. Después de pasar mucho tiempo, esto fue lo único que funcionó a la perfección. – rwb

+0

este script funcionó a la perfección ... – michabbb

+0

Funcionó bien para mí también. –

0

me encuentro con el mismo problema. Tenemos muchas rutas movidas y copiadas remotamente en el repositorio y la única herramienta que realmente ayudó fue svndumpsanitizer Un programa de archivo único C que se puede compilar fácilmente en cygwin o Linux y funcionó como un amuleto en un archivo de volcado incremental de 170 GB con ~ 160,000 comete

Cuestiones relacionadas