Git: Bram Cohen vs Linus Torvalds
wincent.com
wincent.com
What he's missing is that Linus has spent a large part of nearly two decades doing merges using a variety of inadequate tools which no doubt frequently forced him to hand-edit many thousands of patches in order to get successful merges. When Linus sat down to start his two-week project, he brought with him an incredibly rich base of experience with real-world merging of changes in a significant, complex codebase with large numbers of contributors. Also, he's an insightful guy. So while he may not have spent as much time in formal study of the esoteric intricacies, Linus had great insight into the day-to-day issues that merge-heavy development processes create, and how to solve them.
Whatever the value of years of experience, it's foolish to disregard the cost of bias those years build, also.
1. There is no good solution to merging (the only theoretically interesting aspect of source control.)
2. Of all the "bad" solutions to merging, the best one is to handle whatever cases you can and delegate all other cases to humans.
3. There was a lot to be gained from applying serious brainpower to the supposedly easy, supposedly theoretically boring aspects of version control.
Linus has a brilliant technical mind, but unlike most brilliant people, he does not have tunnel vision that steers him towards problems that are already framed as "interesting" problems in an existing theoretical framework.
I decided that Git had won about a year ago, so I switched to it (from CVS and darcs). Mercurial still looked like it might be a reasonable competitor at the time, and it certainly isn't going to disappear, but Git is definitely in the lead at this point.
Existing projects rarely switch VCses, because it's such a pain to move everything over. So new ones gain market share by being the choice of new projects, which then gradually displace old projects in the marketplace. This takes basically forever: a lot of people are still using CVS. But git's won the battle for folks creating new codebases, so it's basically inevitable at this point that people will eventually migrate over to it.
git trounces the competition on this single point, actually, and it could even be one part of the explanation for why git has won so soundly. The tools for converting from another VCS to git are dramatically better than any other DVCS that I'm aware of.
I started using git this way - I had a svn project that I had to go offline with for about a week, so I setup a git repository so I wouldn't lose my work, and then just checked the final state in and deleted the .git directory afterwards. And I currently have to use Perforce at work, but I'll frequently setup a quick git repository to checkpoint large changelists while I'm working on them.
http://blogs.gnome.org/newren/2009/01/03/gnome-dvcs-survey-r...
Another analysis of the same data is here, with even more striking visuals:
http://wingolog.org/archives/2009/01/06/git-and-bzr
It looks like git does indeed have the win.
Can you name any other DVCS that you believe will outpace, or even catch up with, git in the next couple of years for userbase and mindshare?
Yep, Git's won all right.
"Maybe someday somebody will do a PhD thesis on that topic and we'll add it, but until then we're sticking with the basic functionality."
I guess not much innovation would happen if everybody waited for a PhD thesis to be published on a given subject instead of experimenting with their own ideas.
However, I don't want to sound like a complete curmudgeon! I think the "What Git does right" section is a nice read.
1. He strips all the 'pissing' out of the matches... the underlying argument got kind of bitter.
2. His commentary summarizes the important parts on one page, and points out the fundamental difference in their viewpoints. Namely, Bram was focused on making the best merge tool, whereas Linus was focused on making something so merging ends up being a small part of the larger goal of versioning the underlying content instead of just files.