Gamla goda SVN har tjänat som versionskontrollsystem länge, men hur man än vänder och vrider på det så är Git att föredra numera. För tre år sedan konverterade jag själv mina SVN repon till Git. Det är inga konstigheter om du inte är noga med historiken. Men, i större projekt framförallt finns det många fördelar med att inte bara flytta filerna till ett gitrepo, utan faktiskt konverta SVN repot med historiken bibehållen.

Det är inte jättesvårt, men kan ta lite tid. Det första du behöver göra är att exportera ut alla användare som commitat något till ditt svn repo. Det gör du från terminalen och ditt (uppdaterade) svnrepo:


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


Det kommer skapa en textfil med användare som committat. Editera textfilen och sätt motsvarande användarnamn i Git:

 

bjarne = Bjarne Gårdebratt <bjarne@gardebratt.se>


 

När du är klar, så klonar du SVNrepot till ett Gitrepo med följande:


git svn clone svn+ssh://bjarne@minsvnserver.se/var/repositories/MittSvnRepo/trunk --no-metadata -A authors-transform.txt ~/temp_repo


Nu har vi ett gitrepo med svnkoppling. Skapa nu ett centralt gitrepo. Allt du behöver göra nu är att lägga till en remote till ditt centrala gitrepo:


temp_repo$> git remote add gitrepo http://mingitserver.se/mittgitrepo.git


Detta lägger till ett remote repo med namnet ”gitrepo”.
Där efter gör du en push av masterbranchen (som är trunken i SVN) till vårt centrala gitrepo:


temp_repo$> git push -u gitrepo master


Och nu, nu är det klart.