Convertir un SVN checkout para usar git (git-svn)


Trabajo con software que se mantiene en svn para el control de versiones. Me gustaría usar git (git-svn) sin embargo, el software requiere mucha configuración antes de que pueda ser utilizado. Hay herramientas que se encargan de toda la configuración, incluida la comprobación de todo el código a través de svn.

Toda la documentación para git-svn (que he podido encontrar) requiere un nuevo checkout, usando git-svn.

¿Hay alguna forma de convertir un svn checkout existente para que pueda usar git-svn?

Author: Zoe, 2009-05-06

4 answers

Podrías hacer algo como esto:

  1. Haga un clon completo de su árbol SVN usando git-svn, a un directorio temporal. Asegúrate de usar exactamente la misma revisión que tu checkout existente.
  2. Mover el ".git " desde el nivel superior del checkout de git-svn hasta el nivel superior del checkout de SVN.
  3. Entonces tendrás que decirle a Git que ignore el ".svn" directorios, o puede eliminarlos todos.
  4. Elimina el checkout de git-svn.
  5. Ahí, ahora puedes manipula tus archivos existentes con Git y git-svn.
  6. Haga un "estado de git" y espere que diga que no hay cambios.
 11
Author: andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-06 02:15:47

No. Un clon git-svn convierte todo el repositorio en git. SVN checkouts no tiene todo el repositorio y por lo tanto no puede ser clonado. Esta es la principal ventaja de cambiar de SVN o CVS a un sistema distribuido (como git).

 13
Author: singpolyma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-05 20:59:14

Asumo que probablemente quieras mantener el historial. Sin embargo, en caso de que usted (o cualquier otra persona que tropiece en esta página) no necesite el historial, puede usar la función "exportar" como se explica aquí: https://stackoverflow.com/a/419475/2437521 .

 4
Author: matrixugly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:33:33

Otra forma de hacer esto, que no modifica la copia de trabajo original de Subversion y no requiere que la copie, es usando un parche:

  1. Haga un clon completo de su árbol de Subversion usando git-svn, a un nuevo directorio que será el repositorio Git. Asegúrate de usar exactamente la misma revisión que tu checkout existente. Puede usar git reset --hard :/r<revision> para forzar que sea la misma revisión después de la clonación, donde <revision> es la revisión a la que se actualiza la copia de trabajo de Subversion (vea esto usando svn info allí).
  2. cd a su copia de trabajo de Subversion.
  3. Use svn status para asegurarse de que todos los archivos nuevos estén marcados con A (o use svn add para agregarlos), y todos los archivos eliminados estén marcados con D (o use svn rm para eliminarlos).
  4. Ejecute svn diff >patch.diff para crear un archivo de parche.
  5. Copie patch.diff a la parte superior del repositorio Git creado anteriormente.
  6. cd a la parte superior del repositorio Git creado anteriormente.
  7. Ejecute git apply -p0 patch.diff para aplicar el parche en el árbol de trabajo de el repositorio Git.

Ahora puedes revisar los cambios usando git status, y git add/git commit para guardarlos en su repositorio local.

 1
Author: Daniel Hershcovich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-31 11:20:59