LWN.net Logo

Subversion: Is the jump from CVS worth it?

March 17, 2004

This article was contributed by Caleb Tennis

CVS (Concurrent Versions Systems) (http://www.cvshome.org) is by far the most widely used source control program in the open source community. Though it tends to suffice for most projects, CVS is considered by many to be antiquated, lacking features and abilities which would be very valuable to most open source projects. Subversion (http://subversion.tigris.org) is a project which attempts to replace CVS, adding new features where needed, and changing existing functionality only when necessary.

The most notable change for CVS users is Subversion's repository handling of atomic commits. In CVS, every file was individually versioned according to its changes; in Subversion the entire repository is versioned. While conceptually different, the advantage to this change quickly becomes apparent: the entire repository can be returned to a known state. As an added bonus, the addition of special keywords allows one to view changes between file versions quickly without knowing the revision number.

Subversion adds two commands not present in CVS: "move" and "copy". With these, revision histories for files and directories are preserved between location changes. This feature is a boon for most CVS users, who commonly complain about the inability to rename files and directories easily.

In Subversion, branches and tags are nothing more than copies of a directory, making them easier to work with than their CVS counterparts. After becoming accustomed to the concept, one quickly realizes that branches in a Subversion repository are parallel to one another, whereas in CVS the branches feel orthogonal. The branching operation is considerably faster by design, and Subversion's "merge" command is more intuitive than CVS's "update -j".

Additionally, Subversion caches more meta information in the local working copy, eliminating the need for client-server communications for commands like "status", "diff", and the new "revert". Commits are processed by only sending the differences and not the entire file like in CVS, making the commit process considerably faster. Even binary files stored in the repository are handled using a binary diff, making storage more efficient.

Finally, Subversion adds new features that aren't readily available with CVS. Properties, such as MIME types or the execute permission bit can be attached to files. "Hook" scripts can be triggered to run based on certain events, such as a "commit". From the server side, repository control is more fine tuned, and many nice maintenance features have been added, without compromising ease of use.

One of the biggest concerns that many have when considering Subversion is the requirement for Apache2. It is worth noting, however, that Subversion has no requirement for Apache2. It can use the WebDAV protocol through Apache2 for repository access, but also works fine through a standalone server daemon.

These fundamental changes offer newer, and arguably better ways of working with the repository than with CVS. With so many great changes, the authors of Subversion truly have created a viable drop-in replacement for CVS. As more projects start to embrace Subversion for what new features it offers, it is sure to become the new standard for open source project revision control systems.


(Log in to post comments)

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 10:51 UTC (Thu) by rjw (guest, #10415) [Link]

Why would people prefer subversion over arch?
Arch seems to have a lot of the features that make BitKeeper useful, Subversion seems more like CVS+Fixups.

So why is there such as buzz about subversion?

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 12:25 UTC (Thu) by cloose (subscriber, #5066) [Link]

Because its CVS+Fixups. :-)

The article already mentioned that there a lot of CVS users out there and they don't have to/don't want to learn a lot to use Subversion. They don't have to completly change their working style or way of thinking to use it. There is a clear migration path and that's the big plus.

Christian

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 18:30 UTC (Thu) by vmole (guest, #111) [Link]

  • Windows support. My company's main product is Unix/Linux based, but we do have Windows tools, and some of them share code/libraries with the Unix stuff. Even if they didn't, I can't afford the time/effort to deal with two tools.
  • Familiarity. The transistion from CVS to Subversion is straightforward. The transistion to Arch is a bigger mental hurdle.
  • For a company with a few products and a very small developer base, a centralized system can be an advantage: one thing to back up, not too many worries about significant work be kept on a local disk. Contrariwise, the advantages of a distributed system are less meaningful in this environment.
  • [snide]The Subversion people know what their project/product is called.[/snide] The arch/larch/tla/whatever thing is rather offputting, at first glance it seems like several competing and/or obsolete lines of development. I can't afford to change our VC system every few weeks, and for a long time arch seemed a risky commitment. It appears to be a lot more coherent now, but It Would Be Nice if the toplevel of wiki.gnuarch.org had a clarification of what all the different names represent in a prominent position. (Yes, this is obviously a minor point. But you're kidding yourself if you think someone who doesn't follow arch development is going to find this sort of thing a negative when they're trying to figure out what to replace CVS with.)

Subversion: Is the jump from CVS worth it?

Posted Apr 6, 2004 19:29 UTC (Tue) by lypanov (subscriber, #8858) [Link]

just fyi tla works fine on windows via sfu,

Alex

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 21:24 UTC (Thu) by oak (guest, #2786) [Link]

Documentation?

Subversion: Is the jump from CVS worth it?

Posted Mar 19, 2004 16:10 UTC (Fri) by erwbgy (subscriber, #4104) [Link]

The Subversion documentation is excellent.

See the Subversion book "Version Control with Subversion":

http://svnbook.red-bean.com/

and the FAQ:

http://subversion.tigris.org/project_faq.html

I use the svnserve daemon exclusively at the moment and it works well.
There will be no need to set up Apache 2 + mod_dav for a lot of current
CVS environments.

Subversion: Is the jump from CVS worth it?

Posted Mar 19, 2004 15:36 UTC (Fri) by jschrod (subscriber, #1646) [Link]

The focus of Subversion (as of CVS) is to retain control over revisions of files in a project.

The focus of arch (and of darcs, monotone, etc) is to manage changesets, i.e., independent developments tiers by contributors.

Subversion is more mature (portability, file name issues (spaces!)). Arch has a very interesting architecture. Both have security issues, addressed by darcs and others (in particular, OpenCM).

Depending on your need, there are many factors to look at when choosing a code control system. Google around and learn about the joys of code management - this is still a wide and open field!

Cheers, Joachim

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 12:54 UTC (Thu) by zooko (subscriber, #2589) [Link]

I used to think that people who were interested in Subversion either hadn't heard of Arch/DARCS/Monotone/Codeville/OpenCM, or else they didn't understand how those latter ones differed from the centralized paradigm of CVS/Subversion.

However, now that I've read a couple of rants from Greg Hudson, I realize that there is at least one person who knows about the decentralized revision control systems, understands the concepts, and still prefers the centralized paradigm.

It does seem like an oversight for this lwn.net article to completely omit mention of the alternatives. Some advocates of decentralized revision control systems (namely: me) get irritated at the prospect of a whole generation of open source hackers adopting Subversion without anyone ever telling them that there were alternatives.

More on my http://zooko.com/revision_control_quick_ref.html page.

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 12:56 UTC (Thu) by zooko (subscriber, #2589) [Link]

Oh, and I didn't even read closely enough to see this gem:

"As more projects start to embrace Subversion for what new features it offers, it is sure to become the new standard for open source project revision control systems."

Bah!

(I'm not saying "Bah!" to Subversion. I'm saying "Bah!" to newspaper articles that blithely assert the inevitable dominance of Subversion without even mentioning the existence of the alternatives.)

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 13:51 UTC (Thu) by RonO (guest, #13096) [Link]

In fairness to LWN, it's a contributed article. I wouldn't expect the Editor to change the content of the submission. It's clear [to me] the article is intended to be a "rah rah" piece for switching to Subversion. Perhaps you could write and submit a "rah rah" article for switching to one of the alternatives.

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 13:57 UTC (Thu) by icculus_98 (guest, #8535) [Link]

The article is intended merely to look at CVS -> Subversion, not to
necessarily say that Subversion is the *best* source control system.
Obviously CVS isn't considered the *best* source control system by many,
but it's the defacto standard today.

Perhaps we'll take a look at the other source control systems in future
weeks.

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 14:28 UTC (Thu) by jonth (subscriber, #4008) [Link]

Not true. The editor has every right to request a change to the content of the submission (with the permission of the author) or reject it entirely, if it expresses a view that is not the view of LWN. That's his job.

My objection is that a piece of clear propaganda appeared in a news journal. The fact that the editor left it in puts him in a similar position to all those mainstream journalists that don't bother checking out SCO's press releases before blithely printing them.

Usually, LWN is very good at being even handed - even SCO gets the benefit of the doubt until proven otherwise. But this was just an advert disguised as a story, and shouldn't have been accepted.

Jonth

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 14:44 UTC (Thu) by icculus_98 (guest, #8535) [Link]

I apologize that it came across like an advertisement. It was not intended that way at all:

From the LWN.net Author's Guide:

The overall voice of an article should be factual and authoritative. Do your research, and let it show. LWN has a long history of allowing the author's opinion to show through in its writing; in our opinion, it is better to let the audience know where the author is coming from than to try to adopt some pose of "objectivity." Opinions, however, should never get in the way of the facts; your reader should be able to separate the two.

The piece was written as somebody who has used CVS and has migrated to Subversion, and is explaining why the change was beneficial.

I will keep your criticism in mind, though, for any future article submissions.

Subversion: Is the jump from CVS worth it?

Posted Mar 19, 2004 16:00 UTC (Fri) by jschrod (subscriber, #1646) [Link]

One observation: You sound more like a fanboy than the author.

The author clearly had a focus, also expressed in the headline: to report from his migration from CVS to Subversion. His last sentence about "Subversion will be the future dominant revision control system" can be seen in two different ways: Either it expresses his enthusiasm, or it reflects his realism on the non-technical issues concerning tool selection by the OSS community (read Richard Gabriel's famous "Worse is Better" essay to learn what I mean).

Frankly, your name calling is also not appropriate. Calling all people who use centralized CMM systems dumb (with the exception of Greg Hudson) is by no means professional. I'm following CM systems closely, both in research and practice, since 1984. (Actually, your dialogue style reminds me at the atmosphere at the 1st International ACM Workshop on Software Version and Configuration Control, at Grassau (Austria). Lot's of people there who thought they have found the holy grail with changeset-based CM, too.)

I have worked both with centralized and decentralized systems, with revision and changeset approaches, with proprietary and commercial systems. Believe me, the world is not as black and white as you want to make it seen. There are very sound reasons for many CM versions, including arch, Subversion, and CVS [sic!]. It depends on feature points, maturity, type of support expected, how many legacy projects are around, familiarity, etc.

Regards, Joachim

Subversion: Is the jump from CVS worth it?

Posted Mar 19, 2004 17:27 UTC (Fri) by zooko (subscriber, #2589) [Link]

Joachim: I think you might be confusing me ("Zooko") with another poster ("Jonth").

I'm sorry if my dialogue style angered you. I didn't intend to say that all other people who prefer centralized revision control systems are dumb -- I intended to say that until recently (Greg Hudson's articles) I hadn't seen any writing which was both cognizant of decentralized revision control and also argued that centralized revision control was better for some uses. Instead I had seem quite a lot of advocacy for decentralized systems which evinced knowledge of centralized systems, and I had seen quite a lot of advocacy for Subversion which evinced no awareness of decentralized systems.

I'm sure that this says more about my limited exposure to the ideas than it says about the intelligence of the users of centralized revision control systems.

But unfortunately the current lwn article, to which I was responding, is another example of someone who does not seem to be aware of the decentralized alternative, and is advocating Subversion.

Subversion: Is the jump from CVS worth it?

Posted Mar 19, 2004 17:30 UTC (Fri) by zooko (subscriber, #2589) [Link]

By the way, I quite agree with your comments about the suitability of different tools in different situations, and I am interested to hear about the history of the idea of changesets in revision control.

Subversion: Is the jump from CVS worth it?

Posted Mar 18, 2004 14:23 UTC (Thu) by busterb (subscriber, #560) [Link]

The best thing about Subversion for me is its dramatically better Windows
functionality over CVS. SSPI authentication is cached by the client, so a
new authentication token doesn't get acquired on every operation compared
to WinCVS.

Because its DAV-based, I can point Windows people to the web address, or
say to make a 'Web Folder', and don't have to worry about them even
needing a client to get my latest code.

There is active development on plugins for VCC (Visual Studio
integration) and the TortoiseSVN is much more polished than its parent
TortoiseCVS.

Subversion showcases some of the best attitudes of OSS software. Rather
than being competely revolutionary or extremist, it is just a good system
with great interoperability and support for multiple OSes. It's been a
great example at work to compare with Visual Source Safe and other more
expensive/inferior tools that people seem determined to use for some
reason. And remember, this is just version 1.01.

Subversion: Is the jump from CVS worth it? NOT YET

Posted Mar 18, 2004 21:22 UTC (Thu) by jeremiah (subscriber, #1221) [Link]

I don't quite think it's time to switch over just yet.

The argument about apache not being a requirement is bogus. At least if you want it to be used with eclipse. Subclipse only supports the http protocol. If I wasn't running a web server on my repository server already, I'd run apache with no problem, but as it is I can't. So no eclipse. The authentication mecanics seems a little screwy as well, ie they are the same as cvs but without the passwords being stored in an encrypted fashion. svnserve really seems like an after thought. I do like the conversion from cvs though. I'll give it a try when when the support tools are better developed.

Subversion: Is the jump from CVS worth it? NOT YET

Posted Mar 25, 2004 10:18 UTC (Thu) by klaasjan (guest, #5492) [Link]

I just tried out the latest Subclipse version (for the Eclipse 3.0 milestone builds) which worked nicely with svnserve on the server.
You don't have to run apache2 on port 80; if you read the documentation it's recommended running apache2 on a different port if you just want to use it to host a subversion repository.
The authentication of svnserve is limited, but with Apache2 you can use every apache authentication module available.

Subversion: Is the jump from CVS worth it?

Posted Mar 25, 2004 14:13 UTC (Thu) by Hammer (guest, #20447) [Link]

The atomic commits alone are worth it!!! You do not have to spend lots of time reverting that 60 file checkin that failed after 47 files ever again...

The fact that it is faster, versions directories etc is added bonus. I'll not switch back to CVS.

Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds