subgit migrar git svn version-control svn2git

migrar - Convertir un volcado de repositorio svn local a git



migrar svn a git (4)

  1. Todos los convertidores (?) Svn -> git requieren un repositorio de Subversion en vivo,
  2. La copia de árbol del repositorio no es un volcado, es una copia de seguridad habitual a nivel de archivo.

Tienes:

  1. Instale y configure cualquier servidor de Subversion (si su convertidor no puede manejar el file:/// protocolo para SVN, de lo contrario no es necesario, solo descomprima los file:/// y compruebe el repositorio con svn client)
  2. Lea acerca de git-svn
  3. Utilizar git-svn

Busqué preguntas relacionadas, pero no encontré nada que coincida con mi situación específica: tengo algunos archivos de repositorio antiguos de un servidor SVN que se retiraron hace años. Son tarballs de la estructura del repositorio original en el servidor. Lo que quiero hacer es convertirlos en repositorios git como base para futuros trabajos / reactivar los proyectos. Ya he leído varios tutoriales sobre el proceso de conversión, y creo que puedo averiguar la conversión de los autores, el mapeo de sucursales, etc., pero todos asumen que tienes un servidor SVN y una URL para el repositorio. ¿Necesito instalar y configurar un servidor SVN para realizar esta conversión, o hay alguna manera de que pueda apuntar git clone o svn2git (u otra herramienta) al volcado de repositorios que tengo?


  1. Tome el archivo de volcado en sus servidores:

    svnadmin dump "repopath or url" > import.bkp git svn clone "back"

  2. Vaya a la ruta de clonación y luego abra git bash y ejecute estos comandos:

    git svn show-ignore > .gitignore git add .gitignore git commit -m "with message" git check in "git url"


instale subversion localmente para importar su volcado, luego con el paquete git-svn.

Puede usar git svn clone file:///path/to/svn/repo /path/to/empty/dir


Recupere una lista de todos los comprometedores de Subversion :

svn log -q | awk -F ''|'' ''/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}'' | sort -u > authors-transform.txt

Clone el repositorio de Subversion usando git-svn :

git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp

Convierta svn: ignore propiedades a .gitignore :

cd ~/temp git svn show-ignore > .gitignore git add .gitignore git commit -m ''Convert svn:ignore properties to .gitignore.''

Empuje el repositorio a un repositorio simple de git :

git init --bare ~/new-bare.git cd ~/new-bare.git git symbolic-ref HEAD refs/heads/trunk

Luego empuje el repositorio temporal al nuevo repositorio simple.

cd ~/temp git remote add bare ~/new-bare.git git config remote.bare.push ''refs/remotes/*:refs/heads/*'' git push bare

Cambie el nombre de "tronco" a "maestro" :

cd ~/new-bare.git git branch -m trunk master

Limpiar ramas y etiquetas :

cd ~/new-bare.git git for-each-ref --format=''%(refname)'' refs/heads/tags | cut -d / -f 4 | while read ref do git tag "$ref" "refs/heads/tags/$ref"; git branch -D "tags/$ref"; done

Referencia: http://john.albin.net/git/convert-subversion-to-git