The SVN News
Today I was hanging around GitHub when realized a relatively old news, dated to April 1, 2010, saying they do support SVN.
Yes, it’s April Fools day. Very funny date to announce anything serious as they admit themselves in an update to the news post, but it DOES work.
Use the same Git clone HTTP URL, just add “svn.” between “http://” and “github.com”:
It even allows you to write changes back to the repository, as announced in the more recent news post, dated May 4, 2010, check it out for the “cavets” (known issues):
That uses the same URL but with HTTPS:
This should work best when you want to get some project for read-only access or very few commits from your side, when this project has a very long history you are not really interested in. Of course you wouldn’t want to use that if you are leading (or a main committer to) a project hosted at GitHub.
Background, Me and Git (Safe To Skip)
I have been playing with Distributed Version Control Systems (D-VCS) lately, not because it’s fun (it is), but mainly because many open source libraries I’m a fan of have converted from SVN to Git, most of them hosted at GitHub.
Although I feel geeky when dealing with Git (nice feeling), having to deal with its tooling was a bit unpleasant (I’m not against Console, but given there are alternatives with good GUI in other VCS, it felt bad), and having to get entire version history not last updates only for some projects with very big history was quite slow and bandwidth hungry thing.
I discovered the “-depth” switch in git clone command which allows getting last updates by checking TortoiseGit UI, but it still doesn’t play nice with pulling more recent changes after this. Best way is to drop what you have and re-clone the entire working copy. This is bad not only for speed but also it removes some changes I usually need to do (and keep, those I mention at the end of the post).
Also tried TortoiseHg git and SVN modules thinking ti’s a better tooling, but I found that it doesn’t play nice with them also (the details aren’t at the top of my head right now).
What I’m Using It For
So, this news is very nice for me. That allows me to do the exact thing I needed. Get last version, modify local changes I’m not interested in merging with main project (like using key file with some VS project, or upgrading entire VS Solution version from VS2008 to VS2010, etc), update later when some remote changes happen, and get those merged with my stuff.
The clear example for this is NHibernate (hosted on SVN but I hear in uNHAddin mailing list there are early plans to convert to Mercurial). It allows me to do exactly that, and I was willing to do the same with FluentNHibenrate (hosted at GitHub). Now I can, YAY :)
Using Different VCS Clients?
To make it clear, this is not to get rid of Git completely, I think I need to get involved in it more. I used to like Mercurial more, but seems with time I’m getting into this git thing.
It’s nice there are many VCSes to choose from in general, but not nice that you cannot choose only one for yourself. Seriously hate the fact that I have to use different VCS clients at the same time, especially when that depends on what VCS the project uses, not what I happen to prefer.
Now CodePkex, GoogleCode, GitHub support SVN. That’s good for me. Will try to stay there as long as possible. TortoiseHg supports Git/SVN also via plugins, but I won’t stick to that as it’s not as great tooling as I need and extensions don’t always work right for different tasks.