migrar_repositorio_completo_de_svn_a_git
Migrar repositorios de subversion (SVN) a Git manteniendo el historial
Objetivo: Migrar un repositorio subversion (SVN) a GIT.
Qué se necesita.
- Tener un repositorio SVN.
- Tener un repositorio Git disponible para subir el contenido del servidor SVN previamente transformado a formato Git.
- Tener instalado “git-svn” en el sistema encargado de migrar de un sistema a otro.
Comandos. (Entre corchetes están los comandos que requieren edición: dominio, usuarios, etc.)
########## svn log -q svn://dominio/repositorio | gawk -F "|" '/^r[0-9]/ { print $2 }' | sort -u | xargs -I {} echo '{}= nombre <usuario@email>' > /root/usuarios mkdir migracion && cd migracion git svn init svn://dominio/repositorio --no-metadata git config svn.authorsfile /root/usuarios ########## git svn fetch ########## La creación del fichero .gitattributes es optativo, dependerá de las necesidades de cada repositorio. #echo '*.gz -delta' > .gitattributes; #echo '*.jpg -delta'>> .gitattributes; #echo '*.zip -delta'>> .gitattributes; #echo '*.pdf -delta'>> .gitattributes; git svn show-ignore > .gitignore; #git commit -m "add .gitignore and .gitattributes file"; git commit -m "add .gitignore file"; git add .gitignore; #git add .gitattributes; git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep -v @ | while read tagname; do git tag "$tagname" "tags/$tagname"; git branch -r -d "tags/$tagname"; done git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/$branchname"; git branch -r -d "$branchname"; done cd .. git clone migracion/ myproject cd myproject git remote rm origin ########## git remote add stash http://usuario@dominio/proyecto/repositorio.git git config --global user.name "usuario"; git config --global user.email "usuario@dominio" ########## git push stash --all; git push stash --tags;
migrar_repositorio_completo_de_svn_a_git.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1