entre diferencias comparacion git svn git-svn

diferencias - ¿Cómo cambiar los repositorios svn usando git-svn?



git vs svn (2)

Tengo un número de proyectos git creados como clones de repositorios SVN usando git-svn. Hemos migrado nuestros repositorios SVN a un nuevo proveedor, por lo que la URL ahora ha cambiado. ¿Cómo puedo actualizar la URL SVN remota de mi clon git?

Una posibilidad es que vuelva a clonar desde el nuevo repositorio de SVN, pero preferiría no hacerlo ya que el proceso puede demorar varios días en extraer todo el historial.

Otra forma de plantear esta pregunta sería, ¿dónde git almacena información sobre la ubicación del repositorio SVN remoto con el que está trabajando? Por ejemplo, ¿de dónde proviene la información de la URL cuando escribe ''git svn info''?


Encontré una página en el wiki de git que responde exactamente a mi pregunta:

https://git.wiki.kernel.org/index.php/GitSvnSwitch

  • Edite la URL de la URL svn-remote en .git / config para que apunte al nuevo nombre de dominio
  • Ejecute git svn fetch - ¡Esto necesita obtener al menos una nueva revisión de svn!
  • Cambiar svn-remote url de nuevo a la url original
  • Ejecute git svn rebase -l para hacer una rebase local (con los cambios que se produjeron con la última operación de recuperación)
  • Cambiar svn-remote url de nuevo a la nueva url
  • Ejecutar git svn rebase ahora debería funcionar de nuevo!

Esto solo funcionará, si el paso git svn fetch en realidad obtiene algo! (Me tomó un tiempo descubrir que ... ¡tuve que poner una revisión ficticia en nuestro repositorio svn para que esto suceda!)


Siguiendo la https://git.wiki.kernel.org/index.php/GitSvnSwitch , pero con una solución actualizada, se vuelve mucho más fácil.

Dentro de .git/config , en la sección [svn-remote] , establezca url en la nueva URL y configure rewriteRoot en la URL antigua :

[svn-remote "svn"] url = https://new.svn-server.net/svn/root rewriteRoot = https://old.svn-server.net/svn/root

Lo mismo se puede hacer seguramente a través de los comandos git config ... de la guía:

$ git config --local --replace-all svn-remote.<name>.rewriteRoot `git config --local --get svn-remote.<name>.url` $ git config --local --replace-all svn-remote.<name>.url <new_url>

Entonces simplemente funciona, para mí no tengo que hacer ninguna revisión ficticia aunque no haya nuevas revisiones en el nuevo servidor. Curiosamente, git svn info informa la misma URL antigua, pero con la nueva URL como Repository Root:

$ git svn info Path: . URL: <old-url> Repository Root: <new-url>

[1] https://git.wiki.kernel.org/index.php/GitSvnSwitch