John Fremlin's blog: On the greatness of git

Posted 2009-03-01 23:00:00 GMT

Version control has come a long way since the days of RCS/CVS and their lame .NET clone, subversion. The most popular modern system is git. Additionally, there are now many other decent systems: for example, darcs2 and mercurial (but I haven't used them much).

Despite now being a feature-loaded mature system, git is written by real programmers who believe that what is important is the quality of the software and not the self-satisfaction and sense of entitlement of the community around it. Git isn't based on a lot of lamer-support screencasts. It is written in C, on purpose to keep out the .NET programmers, and stands on its own merits and has documentation for grown-ups. Unfortunately, subversion is committed to a more aggressive marketing strategy and has managed to set the emotional framework which people use to consider version control.

Several otherwise reasonable developers that I have personally spoken too have been indoctrinated to believe that git is not a good option for a centrally controlled repository. This is utter rubbish. You can take advantage of the efficiency, powerful merge and history rewriting features of git without descending into chaos. You do not lose control by upgrading from slowversion to git. Using git will not give your project over to the anarchists. Git works really well with a central repository and is in fact designed for an email patch flow.

If you don't want to read the copious, up to date documentation and are familiar with CVS commands, then easygit might be for you. It translates CVS commands to git commands.

Secondly, yes, git does support MS Windows. There are several MS Windows clients. There are also numerous graphical clients. Though I haven't used them myself many seem quite featureful.

Thirdly, git supports anything you might want when it comes to checking out or reverting files. It also supports plenty of stuff for rewriting commit history which I guess is its main competitive advantage relative to other modern revision control systems like darcs.

For an example I was asked about, if you want to get a particular version of a file or set of files, do

git whatchanged ${file}
to find out the commit names if you don't know them already (perhaps something like HEAD^ for one commit before the current state). Then do
git reset ${commit-name} -- ${file}
This will make the contents of the working copy of the file be that of the commit you specified, as if you had copied over the contents from an old copy of the file.

In conclusion, there are few good reasons to ever use slowversion. It is substandard and should be allowed to fade from the page of time.

Wow. You, sir, do sound like an arrogant douchebag. Given the huge number of successful projects that use Subversion to great advantage, your point of view on the topic is ignorant (intentionally?) and pretty much worthless.

Posted 2009-06-09 03:43:49 GMT by sniper

@Dmitrii Indeed, the CLR (.NET) is an innovative and apparently excellent piece of software. It is in no way related to subversion. The connexion is that I find the offensive style of many .NET programs to be similar to subversion's arrogant, coddling approach.

@David Do you have any benchmarks comparing svn to git. In my limited experience it is much slower.

Posted 2009-05-26 08:39:12 GMT by John Fremlin

What utter rubbish. Subversion is neither slow nor in any way related to .NET. This is FUD.

Posted 2009-05-26 07:22:17 GMT by David Raine

I fail to see the connection between .NET and subversion

Posted 2009-05-26 06:47:32 GMT by Dmitrii 'Mamut' Dimandt

Wait, what's subversion got to do with .NET?

Posted 2009-05-26 04:02:34 GMT by aiht

Sounds like somebody like pontificating to me. I've been using svn commercially with many repositories, day in, day out, for over 2 years in a team of 20-plus programmers, designers, web guys, and it's been fine for our purposes, and we've been able to integrate it with tracking and reporting tools quite happily.

Git looks like an interesting project, it has pedigree and plenty of supporters, and will eventually succeed in replacing svn at some point. Its distributed nature is a very interesting feature, which I can see affecting the dynamics of how teams collaborate (even in small companies.)

But to lambast an opposing technology or idea in such a zealous manner only serves to make you look dogmatic and mentally unbalanced, and the weird references to .Net didn't make any sense whatsoever. And no, I'm not a .Net programmer.

Remember what Yoda said, only a Sith deals in absolutes.

Posted 2011-02-23 23:23:20 GMT by David

Post a comment