Comparison between CVS and Subversion

Back to main page

   
SCM feature: CVS Subversion Add to comparison: +AccuRev
+Aegis
+Arch
+Bazaar
+BitKeeper
+ClearCase
+CM+
+CMSynergy
+Co-Op
+Darcs
+Git
+LibreSource Synchronizer
+Mercurial
+Monotone
+OpenCM
+Perforce
+PureCM
+SourceAnywhere
+Superversion
+svk
+Vesta
+Visual SourceSafe
Atomic Commits
No. CVS commits are not atomic. Commits are atomic.
Files and Directories Moves or Renames
No. Renames are not supported and a manual one may break history in two. Yes. Renames are supported.
File and Directories Copies
No. Copies are not supported. Yes. And it's a very cheap operation (O(1)) that is also utilized for branching.
Remote Repository Replication
Indirectly, by using CVSup by John Polstra (which requires running the cvsupd daemon on the server) Indirectly, by using Chia-liang Kao's SVN::Mirror add-on or Shlomi Fish' SVN-Pusher utility.
Propagating Changes to Parent Repositories
No. Yes, using either Chia-Ling Kao's SVN::Mirror script or the svn-push utility by Shlomi Fish.
Repository Permissions
Limited. "pre-commit hook scripts" can be used to implement various permissions systems. Yes. The WebDAV-based service supports defining HTTP permissions for various directories of the repository.
Changesets' Support
No. Changes are file-specific. Partial support. There are implicit changeset that are generated on each commit.
Tracking Line-wise File History
Yes. cvs annotate Yes. (svn blame)
Ability to Work only on One Directory of the Repository
Yes.
Tracking Uncommited Changes
Yes. Using cvs diff Yes. Using svn diff
Per-File Commit Messages
No. Commit messages are per change. No. There is no such feature.
Documentation
Excellent. There are many online tutorials and resources and an online book. The command line client also provides an online comprehensive help system. Very good. There is a free online book and some online tutorials and resources. The book is written in DocBook/XML and so is convertible to many different formats. The command-line client also provides a good online help system that can be used as a reference.
Ease of Deployment
Good. Out of being the de-facto standard, CVS is available on most systems and is easy to deploy. A Subversion service requires installing an Apache 2 module (if one wishes to use HTTP as the underlying protocol) or its own proprietary server. The client requires only the Subversion-specific logic and the Neon WebDAV library (for HTTP). Installation of the components is quite straightforward, but will require some work, assuming Subversion does not come prepackaged for one's system.
Command Set
A simple command set that includes three most commonly used commands (cvs commit, cvs update and cvs checkout) and several others. A CVS-like command set which is easy to get used to for CVS-users.
Networking Support
Good. CVS uses a proprietary protocol with various variations for its client/server protocol. This protocol can be tunneled over an SSH-connection to support encryption. Very good. The Subversion service can use either WebDAV+DeltaV (which is HTTP or HTTPS based) as its underylying protocol, or its own proprietary protocol that can be channeled over an SSH connection.
Portability
Good. Client works on UNIX, Windows and Mac OS. Server works on UNIXes and on Windows with a UNIX emulation layer. Excellent. Clients and Servers work on UNIX, Windows and Mac OS X.
Web Interface
Yes. CVSweb, ViewVC, Chora, and wwCVS. Yes. ViewVC, SVN::Web, WebSVN, ViewSVN, mod_svn_view, Chora, Trac, SVN::RaWeb::Light, SVN Browser, Insurrection and perl_svn. Aside from that, the Subversion Apache service provides a rudimentary web-interface.
Availability of Graphical User-Interfaces.
Very good. There are many available GUIs: WinCVS, Cervisia (for KDE), TortoiseCVS (Windows Explorer plug-in). Very good. There are many available GUIs: RapidSVN (cross-platform), TortoiseSVN (Windows Explorer plug-in), Jsvn (Java), etc. Most of them are still under development.
 


Information taken from Better SCM Initiative website by Shlomi Fish (shlomif@iglu.org.il).

Reorganized for usability by Alexey Mahotkin (Version Control Blog) in 2008.

 

Creative Commons License
This work is licensed under a Creative Commons License.