Despite his crass style, Linus does make a lot of points I have to agree with:
- CVS sucks. SVN tries to be a better CVS, but the problems are so fundamental and SVN doesn't make enough strides to make it much better than CVS.
- Merge is the key feature of any source control system. We've gotten used to CVS's weakness at merge and Eclipse's CVS support helps a lot. I actually think the SVN Eclipse plug-ins are a step backwards since I haven't seen a successful merge with them yet.
- Source control systems should allow everyone write access, at least on branches. I would love it if everyone who customized the CDT could do it in our main repository so we can see what they did and make it easier to incorporate their improvements. I'm not sure that is even possible in CVS and it requires central administration at least in SVN. I guess with Linus's GIT, allowing this is it's number one advantage.
I'm actually a big fan of Rational's ClearCase because of it's ability to manage branches and merges. It was a behemoth to manage, and a lot of people found it hard to work with, but I really appreciated the ability to work in a private branch and make occasional merges back to the main line. I'll definitely want to look at GIT and see how it compares. Of course, we would need an Eclipse plug-in to work with it...
BTW, when I visited Google during EclipseCon, I saw this stage. It's in their cafeteria and you can see people getting drinks in the background. I wonder how many other cool visitors they get like this.
It's an interesting concept. BTW: http://git.or.cz/gitwiki/EclipsePlugin :)
ReplyDeleteI liked the following about SVN (min51) (which is what I've been trying to tell people all the time):
ReplyDeleteSubversion, for example, talks very loudly about how they do CVS right by making branching very cheap. It's probably on their main webpage where they probably say "branching in subversion is an O(1) operation". You can do as many cheap branches as you want. Never mind that the O(1) is actually a pretty large "O", I think.
But even if it takes a millionth of a second to do branching, who cares? It's the wrong thing you are missionarying. Nobody is interested in branching.
Branches are completely useless unless you merge them. And CVS (SVN?) cannot merge anything at all. You can merge things once, but because CVS (SVN?) then forgets what you did you can never ever merge anything again, without getting horrible horrible conflicts.
Merging in Subversion is a complete disaster. The subversion people kind of aknowledge this and they have a plan, and their plan sucks too. It is incredible how stupid these people are. They've been looking at the wrong problem all the time. Branching is not the issue, merging is....
I really like Darcs. It overcomes a lot of the shortcomings of CVS/SVN, I find. Unfortunately, IDE integration is still lacking quite a bit.
ReplyDeleteIf you like ClearCase, but not the administrative headaches, etc., you should certainly look at AccuRev (the ClearCase UCM done right 20 years later tool). You won't be disappointed.
ReplyDeleteS.
SCM systems are like opinions, everyone likes their own best.
ReplyDeleteI wish I had one, than :)
ReplyDeleteI work over at AccuRev and we'd be happy to set you up with a 2-user
ReplyDeletelicense so you can check it out. Just send your email over to jwall (at)
accurev.com and he can get you a key and access to our training video
library. Cheers! Damon Poole
We are running an AccuRev pilot project on our Eclipse/CDT sources and extensions. We've used both CVS and SVN (and VSS a long time ago) and have a laundry list of complaints that we want to address. Basically, the choice seems to be between AccuRev and ClearCase. We've heard the headaches around ClearCase, so that's why we are giving AccuRev a chance.
ReplyDeleteThe functionality is excellent. The client is not perfect, from a UI perspective, but we will be sending our comments to them. Hopefully, they can clean up the client. I haven't looked at their Eclipse integration - it might make some things easier that usign the client.
BTW, the biggest issue was converting the Eclipse and CDT builds to use AccuRev instead of CVS. But it was not that difficult.