User Tools

Site Tools


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