| 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. |
|