Migrer de Svn vers Git

<keywords content="SVN,Git,subversion"/>

Lancement du serveur svn sous windows

  • lancer manuellement svnserve (dans une console cmd)
svnserve.exe -d -r g:\svn


  • lancer svnserve dans un service (dans une console cmd)
sc create svnserve binpath="\"C:\Program Files\TortoiseSVN\bin\svnserve.exe\" --service -r G:\SVN" displayname="Subversion Server" depend=Tcpip start=auto
  • démarrer le service
sc start svnserve

sc query svnserve SERVICE_NAME: svnserve

       TYPE               : 10  WIN32_OWN_PROCESS
       STATE              : 4  RUNNING
                               (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
       WIN32_EXIT_CODE    : 0  (0x0)
       SERVICE_EXIT_CODE  : 0  (0x0)
       CHECKPOINT         : 0x0

WAIT_HINT : 0x0

Migration proprement dite

Merci à


  • aller dans le répertoire ou se situe la copie locale du repo svn
ouvrir un powershell et récupérer la liste des auteurs des commits
svn.exe log --quiet| ? { $_ -notlike '-*' } | % { "{0} = {0} <{0}>" -f ($_ -split ' \| ')[1] } | Select-Object -Unique | Out-File 'f:\temp\authors-transform.txt'
Warning j'ai eu un fichier résultat au mauvais format. Je l'ai converti avec une entête UTF8 sans BOM, avec Notepad++:
  • cloner avec git le repo désiré (préfixe svn pour les reférences svn)
git svn clone svn://localhost/wordpress --prefix=svn/ --no-metadata --authors-file "f:\temp\authors-transform.txt" --stdlayout f:\temp\wordpress
  • créer le dépot git
cd g:/GIT/wordpress

git init --bare .

git symbolic-ref HEAD refs/heads/master

  • pousser les modifications vers le dépot git
cd /f/temp/wordpress

git remote add bare /g/GIT/wordpress git config remote.bare.push 'refs/remotes/*:refs/heads/*'

git push bare

  • renommer la branche svn/trunk et les tags
cd /g/GIT/wordpress

git branch -m svn/trunk master

git for-each-ref --format='%(refname)' refs/heads/tags

Liens externes