Davide Gerosa

Caltech

Farewell SVN, I’m a GIT guy now!

This is a supershort guide to migrate old SVN repositories to GIT.

I was using SVN to handle my research projects, then discovered GIT and it’s definitely another life. The are a few things that are different between the two systems, although some commands are similar, which may indeed be confusing. There are a billion of GIT tutorials on the web, but if you’re looking for a recommendation, I found this page from Bitbucket very nice!

So, you have many SVN repos and want to switch to GIT? I am going to assume assume you have very simple SVN repositories (one single branch, no tags) like I used to have. If you have a more complicated structure, have a look here and here.

You need the git-svn tool. It should be there by default, but if you don’t have you can easily install it from your package manager.

First, enter some directory in your local machine (e.g. where you keep all your geek stuff on GIT, say repositories).

cd ~/repositories

Now, clone your old SNV repository using git svn. Of course, you need access to it: in the example below I use the svn+ssh protocol, but you may have http here depending on your setup (just to be clear, this is the same link you used to checkout the SVN repo in the first place)

git svn clone svn+ssh://USER@HOST/PATH/SVNNAME

where USER, HOST, PATH and SVNNAME are the coordinates of your SVN repo.

If you want a remote host (and believe me, you do!), you need to create a repository on some online service. I will use bitbucket in the example below (I like it a lot, mainly because it gives free unlimited everything to scientists!) but Github is also a popular choice. Assuming you have created a repository on the bitbucket website,  just add it and push.

cd SVNNAME
git remote add origin git@bitbucket.org:USERNAME/GITNAME
git push origin --all

That’s all folks, all previous history and commits are now safely stored in GIT. And of course, if you have troubles the following trick ALWAYS works:

 

git.png

Credit: xkcd n. 1597

 

Picture: clouds somewhere in England