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?
Gracias! Sin embargo, mientras tanto cambié a 'git' que permite ese tipo de actualización (' git -A') – Meinersbur
El svn2svn es específicamente para Windows (el OP está pidiendo una herramienta en Unix). –