2010-03-16 15 views
5

He comprometido un proyecto de terceros en mi propio repositorio svn. Ahora, tengo una nueva versión de ese proyecto y me gustaría sustituirla en mi repositorio.Fusionar la estructura de directorios no versionada en el repositorio SVN

El proyecto es bastante grande (1.2GB) y la nueva versión tiene nuevos archivos/directorios y también archivos/directorios eliminados.

La solución trivial es

svn rm project 
mv /path/to/new/project . 
svn add project 
svn ci 

Sin embargo, me suelta la historia por todo. Además, el servidor svn no podrá usar la compresión delta (sí, el espacio del servidor sí importa).

Otra forma es sobrescribir todos los archivos en el directorio de trabajo y luego confirmarlos. Sin embargo, los archivos eliminados permanecen en el repositorio. svn add --force * también "olvidó" agregar algunos archivos.

¿Cuáles son las otras posibilidades de comprometer la nueva versión? ¿Es este un caso de uso inusual por lo que no hay soporte incorporado para esto? (Con Tortoise SVN me había perder el tiempo con los .svn carpetas, tortuga ofrece para eliminar los archivos/carpetas que faltan en el diálogo de confirmación, pero la versión de línea de comandos se niega a comprometerse si encuentra archivos/carpetas no eliminados utilizando svn rm)

Extra 1: ¿Cómo evitar que se anulen los cambios en mi repositorio? (Hay muy pocos, por lo que volver a aplicar es aceptable por el momento)

extra 2: He sustituido todos los enlaces simbólicos con copias del destino (Para deshacerse de special status changed errores). ¿Cómo evitar esto?

Extra 3: ¿Cómo lidiar con los archivos/directorios renombrados? Como acabo de obtener la nueva versión sin historial de cambios, es imposible determinarlos automáticamente. svn mv antes de comprometerse?

Respuesta

5

La herramienta fs2svn, parte de svn2svn hace lo básico de lo que estás buscando. Comience con this post.

+0

Gracias! Sin embargo, mientras tanto cambié a 'git' que permite ese tipo de actualización (' git -A') – Meinersbur

+0

El svn2svn es específicamente para Windows (el OP está pidiendo una herramienta en Unix). –

1

Puede probar el método que subverion recomienda fusionarse en el código de proveedor a través de una rama de proveedor y luego combinación de troncales. También tienen una herramienta, svn_load_dirs.pl, para ayudar con adiciones, eliminaciones y movimientos en la versión anterior.

Los detalles se pueden encontrar en: http://svnbook.red-bean.com/en/1.6/svn.advanced.vendorbr.html

Cuestiones relacionadas