 |
CVS or Else?
Posted by joshy on August 06, 2003 at 10:16 AM | Comments (17)
In my years as a professional programmer I have used many Revision Control Systems (RCSes). It's that software that manages and protects the software you use. One of the tools of the toolmaker. Many companies pay tens of thousands of dollars for this software, often licensing it per-seat, and yet a perfectly good free alternative exists: CVS. In fact I will argue that there almost no reasons not to use CVS. While there are some other RCSes which beat CVS on technical grounds like parallel development I think that CVS has the edge in everything that counts.
Non-technical reasons to use CVS:
-
Free. And I mean cost, as in saves you hundreds of dollars per seat.
-
Cross platform server. This means you don't have to install/upgrade a server just to support your version control. It goes where you want it to.
-
Cross platform client. You can run CVS on anything. And if you can't then you can recompile it. And if you can't do that, then you can download a 3rd party client. You are never locked in to one system.
-
Open file format. The data storage format is completely open and documented. This makes it easy to do backups, write custom parsers, or switch to another RCS. You are never locked in. This is probably the most important reason to use CVS. Your code is your lifeblood. You can never allow someone else to control it.
-
Open hooks. Like all of the best software it does one thing well (track changes to your code tree) and gives you hooks to do other things. Want to send an email or run a shell script each time code changes? It's a one line command. Reformat the code when it's checked in. Insert version numbers. Trigger unit test verification. Access it over SSH. Authenticate against LDAP. All easy with CVS. All difficult or impossible with proprietary systems.
-
Multiple clients. This is probably the most important to the developer. Use whatever client you want. Use more than one at a time. Strange clients start to appear when we are given this freedom. Tortoise CVS to right click commit from your desktop. Command line cvs for shell scripts to backup config files. The CVS Ant task for Java builds. Plugins for your editor, like jEdit. Sky's the limit for these puppies.
There are reasons to choose proprietary solutions, but must be very good reasons to out weigh the advantages of CVS being open. Choice lets the developer focus on what's important: developing high quality code on time and under budget. The revision control system is the last thing you want to interfere with development.
Choice is good.
- Joshua
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Could it be political?
This might be a stretch, and I've really only used Visual Source Safe, Perforce, and CVS, but I've noticed that some technical decision makers avoid free/inexpensive tools because they fear that non-techinical managers might have a lower preceived value on the project and by extension, the group itself, if costs are lower.
The old 'how many people/how big a budget do you have' mentality.
What sounds better: a 2 million dollar project, or a 2 thousand dollar project?
It's a shame because as developers we choose tools that work: battle-hardened stuff.
I remember talking with an 'enterprise architect' last month or so at a pub, and trying to explain why for some projects, vi was faster to code in for me...he never got it, just shuck his head and mumbled something about costing the company and cowboy coders...
Posted by: d_bleyl on August 06, 2003 at 10:48 AM
-
Scaling
I haven't used CVS (though I used SCCS way back when), but I worked at a source control company once upon a time.
Basically, the cheap/free low end stuff usually doesn't scale. Fails to store differential changes maybe. Can't handle multiple labels across multiple branches. Doesn't have any lifecycle ability (eg. this file is editable by DEV until code-freeze, then only by a few authorized folks). Complicated queries such as "find all files that changed on this branch, for this label, within the last 24 hours." Etc.
Again, I don't know CVS, but those are usually the reasons I was told. If you've got a relatively small group of developers and not much branching of the code base, CVS is probably the right tool for the job.
Posted by: ckessel on August 06, 2003 at 11:17 AM
-
Why, indeed
"Why do so many companies have revision control systems that cost more and restrict their developers so much?"
In my experience, it's often due to ignorance about free or open source software. After we moved several projects from CVS to Visual SourceSafe for what appeared (to me) to be no good reason, I questioned the move. I was told that they had "extensively researched" several SCM systems, and that the design people weren't comfortable using the command line. I pointed out that there are several free CVS GUI clients, and that many of the tools the designers feature CVS support built-in. "Really? I wasn't aware out that." This fact didn't come up during "extensive research?" I also question how extensive research could ever lead somebody to choose VSS, but that's another story.
During this move from CVS to VSS, one of the managers* said, with much derision, "So-and-so had the developers using some free software." The word "free" was said with disgust. The belief being that free software could not possibly be any good.
* This manager is part of the "Program Management Organization," a group charged with coming up with "standards" and "best practices" for software development. Basically, they tell developers how to do their jobs, even though they sit in an Ivory Tower and haven't done any development themselves in years, if ever. This is yet another reason why good companies throw bad money away for VSS, PVCS, and their ilk.
Posted by: jimothy on August 06, 2003 at 11:44 AM
-
Devil's Advocacy
Here are the anti-CVS reasons that I've heard before (please understand that I do not necessarily agree with all or any of them):
* CVS isn't integrated with a bug-tracking system (eg, you can't necessarily find the rev's that went into resolving a particular bug/feature)
* CVS handles binaries poorly (this has gotten much better in recent years)
* It's difficult to re-package or otherwise move code around and keep history (requires hacking around in the respository)
* You MUST believe in merges to use CVS. CVS does not have a straightforward way to lock files.
Of these, the last is cited most often to me, usually by someone who had a hideous merge experience. Of course, that reeks not of bad source-control software, but bad process - bad merges happen when two people edit the same part of the same file, and/or when at least one party has neglected to sync up with the server for a long time.
And of course, the super-duper file-locking system usually shows its evil side when someone leaves a critical file locked and goes off to the French Alps for a vacation.
One more reason that un-free source-control systems get adoped has to do with Dilbertian causes -- in some jobs, spending money is a way to prove you're actually doing something.
--invalidname
Posted by: invalidname on August 06, 2003 at 12:14 PM
-
Why CVS sucks...
-Yes, deleting a directory is important.
-There are no good UIs for CVS, only tolerable ones
-CVS is more difficult to use: (what? I have to know the module name first? Where's the list? How do I get all of the modules?, etc..)
-Rename, Branching are easier with other tools
- Merging, doing stuff, Merging AGAIN are easier with some of the other tools (VSS sucks at that too)
VSS is a bad alternative. It is used only because most Microsoft developers "get it for free" as part of the standard Ms development tools
Clear-case may be good but it isn't worth the ridiculous cost.
Some Alternatives:
http://www.relisoft.com/
http://subversion.tigris.org/
http://www.qumasoft.com/
The problem with some of these is that they only run on windows, sigh...
Posted by: swpalmer on August 06, 2003 at 12:52 PM
-
Better alternative
CVS is indeed the best version control system I've used. In response to the post questioning it's ability to scale, I submit that most open source projects use it. Granted, most of them don't have a large developer base, but enough of them do.
What I've been watching for, and planning to install for personal use, is subversion. It does fix a couple of shortcomings with CVS. CVS commits are not atomic when committing a bunch of changes at once. CVS does not have any way to move/rename files (important for refactoring) without resorting to ugly hacks that have their own drawbacks.
Posted by: gvaughn on August 06, 2003 at 02:09 PM
-
CVS can do most if not all of these.
As someone who has been programming using CVS for years, and have been working in KDE (which has several hundreds of active CVS accounts) I have some experience with it.
All the above can be done with CVS, the crux is that it, as with any non-standard query, it requires some knowledge of the tool and knowledge of the system.
I, for example recently created a CVS account for a customer which is allowed to do translations for us. He can only commit in that directory where his translation files live. Simple addition to the ACL file.
Posted by: zander on August 07, 2003 at 03:17 AM
-
Subversion
I think the idea (i.e., a product to replace CVS, with his qualities but wihout its limitation) is excellent, but it looks like the project lost that momentum. They are not even in beta yet, and I don't know any project which uses it (besides itself).
Does any anyone have any experience in the field?
Posted by: felipeal on August 07, 2003 at 03:55 AM
-
Else
My first RCS has been Clearcase, the full version, not the Light edition. I found it very intuitive and powerful. Its filesystem integration and dynamic views (compared to snapshots) are way beyond CVS capabilities. Its graphical interface is much better than CVS frontends like Tortoise-CVS or WinCVS.
After Clearcase I've been using CVS, Subversion, Visual SourceSafe and Perforce. Among those, I find CVS superior to VSS only.
I think Clearcase dynamic views and filesystem integration are a good reason to prefer it over CVS, because they really make the RCS transparent to the developer.
Posted by: xtian on August 07, 2003 at 07:12 AM
-
Smacked by reality
Tried posting a similar comment yesterday, but it never appeared.
You hit the nail on the head - "a 'free'...[yuck]".
Some tech managers get scared that non-techs may misjudge the value of their projects based on the price tag.
Does a 20 million dollar project sound better than a 2,000 dollar one?
At a pub a while back, an "enterprise architect" fell off his stool when I told him I use vi for some projects - he wanted to kung-fu me or something. Accused me of doing all kinds of nasty things. Without seeing code or results. And when I said on-time, on-budget, requirements met, he plugged his ears and went 'nanananana'.
Posted by: d_bleyl on August 07, 2003 at 07:59 AM
-
Smacked by reality...
I've seen this 'that 'free'[yuck]' reaction.
Some tech managers focus on the $ amount of their projects as a status thing. Will non-tech managers preceive the value of inexpensive tools accurately?Does a 2 million dollar project sound better than a 2 thousand dollar one?
A while ago at a pub, an "Enterprise Architect" attempted to kung-fu me when I told him that I use vi for some projects. Did he ask about the success of these projects?
Posted by: d_bleyl on August 07, 2003 at 08:16 AM
-
Yes, I'm redundant - which is a good, sometimes.
Posted by: d_bleyl on August 07, 2003 at 08:18 AM
-
Popular anti-CVS arguments
Here are the anti-CVS arguments I've seen over the years. Visit Safeway or Publix for any needed grains of salt:
* CVS handles binaries badly - well, it used to
* It's hard to alter directory structures and keep history
* Not tied into a change-tracking system - in theory, people think they'll want to track which revs of which files went into resolving a given issue. (IMHO, I think the value of this is *vastly* overrated. Indeed, I've never seen it done, even after purchasing StarTeam with the intention of doing just that)
* No straight-forward file-locking mechanism - CVS expects you to trust merges. A lot of people don't, usually saying how they once spent hours resolviing a horrible merge. It doesn't occur to them that the problem was not source-control but bad process - two developers editing the same part of the same file, with at least one failing to synch with the server often enough.
Cynically, I would also note that in any company there are people for whom spending money is a key way to prove they're doing something.
--invalidname
Posted by: invalidname on August 07, 2003 at 08:24 AM
-
Popular anti-CVS arguments
I agree with all of these reasons that CVS sucks. Like our representative democracy I think it really really sucks, but that it's better than anything else out there.
Hopefully Subversion will fix these issues.
Binaries: It seems to work okay on my binaries as long as i use the -kb flag. I wish it was better at autodetecting.
Dir structures: Yeah. It's a pain. I find I often don't refactor as much as I would because of this.
Change Tracking: I'd love to see it integrated into something like bugzilla (not actually bugzilla, but something *like* it. ). Maybe something that runs performance and unit tests as well.
Locking: I personally hate locking and haven't found it to be that useful. Most of the time merging is what you want, but sometimes locking would help. Perhaps soft locking would be good. I can still check something out if it's locked but it warns me and makes me take special care when I check it back in.
I once had a plan for a black box that would be the fully integrated software management system. (bug tracking, revision control, unti tests, documentation, release scheduling).
I'd call it the MCP, and it would torture anyone who broke the code in a neon and black stadium with breathtaking computer animation. :)
Posted by: joshy on August 07, 2003 at 08:40 AM
-
Subversion is better CVS
According to http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260, Subversion v. 0.26 was released on Jul 23, 2003 - so the project is alive and well.
I've been using Subversion for a few months, and I love it. It's like CVS that always does the right thing. It has been stable and dependable.
My biggest complaint about Subversion is that the server difficult to install and set up. There's a bunch of special things you need to do to Apache 2.0 and quite a few dependencies. Installation is not for anyone shy with Unix!
Posted by: jessewilson on August 07, 2003 at 04:13 PM
-
Popular anti-CVS arguments
cvstrac at
http://www.cvstrac.org/
is a straightforward, easy-to-use web-based bug tracking system and wiki that is integrated with CVS
Posted by: moraes on September 01, 2003 at 02:43 PM
-
Hi,
I saw this post about CVS and popular trackers and I just wanted to point out that this Bug Tracker might also work for you. Thanks, Mike
Posted by: botah on August 30, 2007 at 01:58 PM
|