Importar al mismo directory de repository de Subversion varias veces?

Por una serie de razones, la fuente canónica de algunos files que tengo no puede ser una copy de trabajo del repository (el server de Subversion está detrás de un firewall inaccesible, y los datos no existen de forma nativa en el sistema de files en mi estructura preferida ) Entonces, escribí una herramienta que descarga los datos, genera una estructura de directorys a partir de ella y luego usa SharpSvn para importar el resultado al repository. Esto funciona … la primera vez. La segunda vez, por supuesto, ya existe un directory de ese nombre en el repository, y no puedo volver a importar.

En cambio, pude:

  1. Eliminar el directory, luego importar. No he probado esto, pero aparte de sonar estúpido, probablemente también borre el historial de revisión de los files respectivos, con respecto a los nuevos como totalmente diferentes.
  2. Vea si el directory existe, compruébelo, borre remotamente los files que ya no existen en la fuente canónica, luego reemplace el rest y confirme. Esto probablemente funcione, pero suena propenso a errores e innecesariamente difícil.

¿Es correcto mi suposition de que borrar files marcará nuevos de la misma manera que files diferentes ? ¿Hay una manera más fácil que el segundo enfoque?

Para 1), no eliminará el historial de revisión, pero los nuevos files serán tratados como completamente independientes de los antiguos. Aún así podría recuperar los files viejos.

Para 2), esa sería la forma recomendada. Pero después de 'svn borrar' los files existentes y agregar los nuevos, también tiene que 'svn agregar' esos files nuevos antes de confirmar.

Pero parece que deberías considerar usar el script svn-load-dirs.pl. Puede leer sobre esto en el libro de Subversion, capítulo " Ramas del vendedor ".

Subversion tiene una connection suelta a los files. Para los files dentro de una carpeta, puede hacer una obtención / actualización, hacer cambios masivos (incluyendo eliminar, replace o agregar files), y luego confirmar las diferencias. Ese comportamiento a nivel de file es el uso típico de Subversion.

Los directorys son ligeramente diferentes. Subversion almacena la información del repository en el nivel de la carpeta. Por lo tanto, si crea una nueva carpeta, no tendrá automáticamente una connection a Subversion. (Usando algo como TortoiseSvn, se encarga de gran parte de eso para ti).

Si va a agregar y eliminar directorys durante el process de generación, tendrá algunos problemas levemente diferentes a los de los files. Pero aún puede lograr su objective a través de la command-line, SharpSvn, TortoiseSvn u otras herramientas similares.

Como no puede sobrescribir los directorys o destruirá el directory .svn y perderá toda la información del repository, deberá copyr los files pero solo crear directorys nuevos. Así es como lo haría, desde la copy de trabajo de subversión que desea actualizar:

 (cd <newdirectory> ; tar -cf - * ) | tar -xf - 

De acuerdo, necesitas un sistema Unix-y. Debería funcionar con Cygwin , a less que Windows haga algo particularmente extraño al sobreescribir carpetas a nivel del sistema.