Two days ago, I watched the video of Linus Torvalds' talk about GIT versus other version control systems at Google. It's 67 minutes long, but definitely interesting.
I think I must have checked out almost every freely available source control system last autumn, and in the end, I liked none. Linus seems to have the same sentiment: the most important aspect about a version control system, to me, is easy branching and merging. Otherwise, it's just a glorified archive, merely enhanced with a diff view on the history. There's one of these systems that doesn't even do merge. If you want it, you need a third party tool.
Now, where we differ in opinion is on his insistence that the system must be distributed. He is a huge scale developer, keeping a repository of the entire Linux kernel, with thousands of contributors, while I'm just a small time developer. What I want it for is for maintenance of some CPAN modules — and at work, there's only the three of us, so in theory, a central repository would work just as well.
But even for CPAN modules, you can easily consider my personal repository, the one that eventually gets posted on CPAN, and the code from people who fix bugs and submit patches, as separate repositories, which I'd eventually like to be able merge easily. So even at this small scale, the benefit of using a system that is well suited for easy merging in other people's code, would be beneficial. Actually, it makes even more sense to use a distributed system for CPAN work, than for the code of us three at work.
What kills of GIT as a candidate for me, is the fact that it doesn't work on Windows. I can understand that Linus prefers to use just Linux, but I'm not fully converted, and I only use Unixy systems for server roles, not for desktop. And I'm not prepared to have to use an external Linux server just for
the source control system, that would blow most of a GIT's benefits out of the water, at least partly.
So I'm left in limbo. Linus' only other recommendation to look at is Mercurial. I remember trying it out, and it didn't work too well on Windows. Neither did most of the other things I tried, BTW.
cygwin?
merlyn on 2007-06-05T21:05:51
I'm told it works reasonably well under cygwin. And the line-ending issue is dealt with in the latest releases.
git and darcs
rjbs on 2007-06-06T00:00:05
The two VCS I always hear mentioned together are git and darcs. Darcs works on Win32.
Re:git and darcs
bart on 2007-06-06T10:43:39
Darcs works on Win32.
No it doesn't. It tried a commit once, on a small project, and I got an endless stream of errors.
Another to try...
sigzero on 2007-06-06T01:55:33
"monotone"
It works on all the platforms that I am on.
The biggest factor...
Alias on 2007-06-06T03:19:32
... is if you need distributed development or centralized development.
In my user case, SVN is a good fit for me:
1. I have 400 gig of free disk on the SVN server, and several gig free on my local disks of all the machines I care about with checkouts (although the SVN copy bullshit makes me cringe).
2. I want centralized development, since I sync from several different machines I do development work on. If people want to do star-topology decentralization, they can use svk.
3. It's fully cross platform. Not only that, it has a number of GUIs on all the platforms. I work faster with GUIs I find for most version control stuff.
4. It uses HTTP. This is a major thing. It means that I can access the repository very very easily, I can commit releases into the repository and have PAUSE grab them directly, and anyone that wants to install a release can use something like pip of cpanp and install modules (with dependencies) directly out of version control.
A few people have tried to recommend git to me before, and the argument is generally that
1. It has smaller files
2. It uses a fully decentralized development model.
So the main features are one that I don't need, and another that I don't want.
Add to that, it's not cross platform, and it doesn't have amazing GUI support.
For me then, no sale.
Re:The biggest factor...
bart on 2007-06-06T10:46:57
The biggest con, at least for me, is that branching and merging in SVN is a huge pain.
What is the distributed/centralized difference?
mr_bean on 2007-06-08T11:37:23
I thought the difference was that there was no one authoritative repository on one physical machine, but from reading the Slashdot discussion
http://developers.slashdot.org/developers/07/06/03/004214.shtml, it appears that the difference is between keeping visitors to your house out of your bedroom until you trust they are gentlemen (git) and letting them have the run of the house when you invite them in the front door. (subversion).
Incidentally, Linus appears to have antagonized the source control people at Google . One, a big fan of subversion, says
http://developers.slashdot.org/comments.pl?sid=237163&cid=19369071 git is like a pyramid scheme, and holes in subversion are filled by svk.
old kernel list VCS discussion analysis
mr_bean on 2007-06-19T00:06:31
Interesting historical analysis of VCS discussion on the linux kernel list.
http://opensource.mit.edu/papers/shaikhcornford.pdf