Archive for the tag 'svn'

Kenai.com soon with git?

Everybody has heard about Sun’s new code forge platform Project Kenai [1]. Kenai provides two diffrents SCM systems: SVN and Mercurial. But this seems not to be enought, the community asks for GIT [2].

[1] http://kenai.com/
[2] http://kenai.uservoice.com/pages/general

GIT: Convert a SVN into GIT repo

If you like to convert your SVN repo into a GIT bare repo, it is simple like that. I normally just take the trunk directory of the SVN repo:

git-svn clone <url>/trunk /tmp/git-temp
git clone --bare /tmp/git-temp /pub/scm/<yourproject>.git
rm -rf /tmp/git-temp

Why SVN sucks

I started using SCM with Subversion (SVN) [1] years ago and was quite happy with it. There were some quirks like:

  • the .svn directory in every directory
  • branching is in most cases senseless, it starts a complete new independent tree. You can not really merge! (See also “Subversion merge reintegrate” [2])
  • I like to develop my projects in the train, airplane, parks, restaurants. But SVN must have network support if you want commit. Of course you can install SVN locally and commit to there but what about other team members? It makes more troubles than anything else… So i just made huge commits most of the time.

but I said to myself, you will not find a piece of software which fits into my needs, right?

Few weeks ago, I found speeches [3][4] of GIT by Linus and Schwartz on Youtube . And it seemed GIT solved every issue i had with SVN. After that I looked deeper into GIT [5] and was amazed:

  • It is so fast
  • Uses only flat files
  • Branching and merging is a cheap action! You can make as much branches of your master as you want, you actually make a new branch for every feature or experimental work you develop. You commit into this branch and nobody sees, because it is local. After finished you just merge into your master branch or you delete the experimental work. EASY!
  • Only one .git directory, so a rm -rf .git in the project root removes GIT versioning.
  • It can interact as a SVN client with git-svn. So you will be able to commit into git in your local branch, merge and commit to SVN remote. But there is no need at all to have a centralized SVN repository, you will be able to have a public GIT repository.
  • GnuPG support (for your web of trust)
  • Actually i didn’t find any quirks, it just fits!

I wonder why so many open source project still using SVN? Maybe they use GIT as SVN client or they just don’t know better.
[1] http://subversion.tigris.org/
[2] http://blogs.open.collab.net/svn/2008/07/subversion-merg.html
[3] http://www.youtube.com/watch?v=4XpnKHJAok8
[4] http://www.youtube.com/watch?v=8dhZ9BXQgc4
[5] http://git.or.cz/