migrar - Convertir un volcado de repositorio svn local a git
migrar svn a git (4)
- Todos los convertidores (?) Svn -> git requieren un repositorio de Subversion en vivo,
- La copia de árbol del repositorio no es un volcado, es una copia de seguridad habitual a nivel de archivo.
Tienes:
- 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 losfile:///
y compruebe el repositorio con svn client) - Lea acerca de git-svn
- 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?
Tome el archivo de volcado en sus servidores:
svnadmin dump "repopath or url" > import.bkp git svn clone "back"
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