分类: 项目管理
2011-02-18 16:18:03
Compare SCM tools with Subversion
CVS vs. Subversion
SCM feature: |
CVS |
Subversion |
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. |
Intelligent Merging after Moves or Renames |
No. Renames are not supported at all, much less intelligent ones. |
No. "svn help me" says "Note: this subcommand is equivalent to a 'copy' and 'delete'." There's . |
Remote Repository Replication |
Indirectly, by using by John Polstra (which requires running the cvsupd daemon on the server) |
Indirectly, by using Chia-liang Kao's add-on or Shlomi Fish' 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. , , , and . |
Yes. , , , , , , , , , 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. |
Branching |
Yes |
Yes |
Tagging |
Yes |
Yes |
ClearCase vs. Subversion
SCM feature: |
ClearCase |
Subversion |
Atomic Commits |
Yes. Commits (checkins) are atomic. |
Commits are atomic. |
Files and Directories Moves or Renames |
Yes. Directories are first-class controlled entities in Clearcase. Even supports controlling of symbolic/hard links. |
Yes. Renames are supported. |
Intelligent Merging after Moves or Renames |
Unknown. FILL IN. |
No. "svn help me" says "Note: this subcommand is equivalent to a 'copy' and 'delete'." There's . |
Remote Repository Replication |
Not really applicable for clearcase, but see next point. |
Indirectly, by using Chia-liang Kao's add-on or Shlomi Fish' utility. |
Propagating Changes to Parent Repositories |
Yes, using Clearcase Multisite. |
Yes, using either Chia-Ling Kao's SVN::Mirror script or the svn-push utility by Shlomi Fish. |
Repository Permissions |
Yes, a unix-like permissions model is used, which maps onto Windows domain-based authentication in multi-platform environments. |
Yes. The WebDAV-based service supports defining HTTP permissions for various directories of the repository. |
Changesets' Support |
Not supported in this way. Extensive branching support gives similar benefits. (eg each changeset can be given a branch). Also optional UCM feature gives something like this (each changeset is a "stream"). |
Partial support. There are implicit changeset that are generated on each commit. |
Tracking Line-wise File History |
Yes, "cleartool annotate" |
Yes. (svn blame) |
Ability to Work only on One Directory of the Repository |
Yes, using snapshot view load rules. |
Yes. |
Tracking Uncommited Changes |
Yes, "cleartool diff" |
Yes. Using svn diff |
Per-File Commit Messages |
Yes, assuming a comment on the branch is sufficient for a per-changeset message. |
No. There is no such feature. |
Documentation |
Extensive online help in Windows Help / UNIX manpage format, also PDF-based documentation. However the complexity of the tool can mean a lengthy ramp-up time. |
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 |
Poor. Clearcase is very difficult to install in general. At least, setup for a new site is quite complex. Installing additional servers (eg repository servers) is less so. |
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 |
Excellent. All tools are available through the command-line. Not very compatible with CVS though. |
A CVS-like command set which is easy to get used to for CVS-users. |
Networking Support |
Poor. Uses an *extremely* chatty RPC protocol for most clearcase operations, plus NFS or SMB for accessing the files themselves. Typically servers should be deployed locally (ie on the same LAN) as the client workstations for acceptable performance. |
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 |
Medium. Available on Windows, and several selected flavours of UNIX (not including MacOS X, or any other Linux other than Red Hat). |
Excellent. Clients and Servers work on UNIX, Windows and Mac OS X. |
Web Interface |
Yes. Web views are supported. |
Yes. , , , , , , , , , and perl_svn. Aside from that, the Subversion Apache service provides a rudimentary web-interface. |
Availability of Graphical User-Interfaces. |
Supplied for both Windows and UNIX. GUI tools are typically not as solid as the command-line tools though. |
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. |
Branching |
Yes |
Yes |
Tagging |
Yes |
Yes |
BitKeeper vs. Subversion
SCM feature: |
BitKeeper |
Subversion |
Atomic Commits |
Yes (but need to verify) |
Commits are atomic. |
Files and Directories Moves or Renames |
Yes. Renames are supported. | |
Intelligent Merging after Moves or Renames |
Unknown. Probably Yes. |
No. "svn help me" says "Note: this subcommand is equivalent to a 'copy' and 'delete'." There's . |
Remote Repository Replication |
Yes. |
Indirectly, by using Chia-liang Kao's add-on or Shlomi Fish' utility. |
Propagating Changes to Parent Repositories |
Yes. |
Yes, using either Chia-Ling Kao's SVN::Mirror script or the svn-push utility by Shlomi Fish. |
Repository Permissions |
FILL IN |
Yes. The WebDAV-based service supports defining HTTP permissions for various directories of the repository. |
Changesets' Support |
Yes. Changesets are supported. |
Partial support. There are implicit changeset that are generated on each commit. |
Tracking Line-wise File History |
Yes. (bk annotate) |
Yes. (svn blame) |
Ability to Work only on One Directory of the Repository |
No. All changes are made repository-wide. |
Yes. |
Tracking Uncommited Changes |
Yes. Using bk diff. |
Yes. Using svn diff |
Per-File Commit Messages |
Yes. It is possible to have a per-file commit message |
No. There is no such feature. |
Documentation |
Very good. There is a comprehensive help at the BitKeeper site. Each command is documented in its own man page, and the client contains a help tool that offers an integrated 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. All that is required is downloading a binary for the system and installing it using the installation script. The package is self-contained and is easy to set up. |
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 CVS-like command set with some easy-to-get-used-to complications due to its different way of work and philosophy. |
A CVS-like command set which is easy to get used to for CVS-users. |
Networking Support |
Good. Repositories can be checked out from remote over HTTP, and BitKeeper also sports its own proprietary protocol for communicating between one repository and the other. |
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 |
Very good. Binaries are available for most common UNIX systems and for Windows 98 and above. |
Excellent. Clients and Servers work on UNIX, Windows and Mac OS X. |
Web Interface |
Yes. Its own built-in web-interface. |
Yes. , , , , , , , , , and perl_svn. Aside from that, the Subversion Apache service provides a rudimentary web-interface. |
Availability of Graphical User-Interfaces. |
Good. BitKeeper ships with several GUIs for performing common tasks. I'm not aware of any third-part GUIs. |
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. |
Branching |
Yes |
Yes |
Tagging |
Yes |
Yes |
Perforce vs. Subversion
SCM feature: |
Perforce |
Subversion |
Atomic Commits |
Yes. Commits are atomic. |
Commits are atomic. |
Files and Directories Moves or Renames |
Not directly (you copy and then delete but it manages to keep track of the branch) |
Yes. Renames are supported. |
Intelligent Merging after Moves or Renames |
Partial. While perforce doesn't explicitly support renames (one hsa to do a copy+delete), it does keep track of the full revision and integration history across copying, so changing a file in the copied directory and trying to merge it does the right thing. |
No. "svn help me" says "Note: this subcommand is equivalent to a 'copy' and 'delete'." There's . |
Remote Repository Replication |
Yes. Via the Perforce Proxy (P4P) tool. |
Indirectly, by using Chia-liang Kao's add-on or Shlomi Fish' utility. |
Propagating Changes to Parent Repositories |
Unknown. Probably Not. |
Yes, using either Chia-Ling Kao's SVN::Mirror script or the svn-push utility by Shlomi Fish. |
Repository Permissions |
Yes. (more than half a dozen of permission levels that can be set in a file by file basis) |
Yes. The WebDAV-based service supports defining HTTP permissions for various directories of the repository. |
Changesets' Support |
Yes. Changesets are supported. |
Partial support. There are implicit changeset that are generated on each commit. |
Tracking Line-wise File History |
Yes, an annotation feature is present. |
Yes. (svn blame) |
Ability to Work only on One Directory of the Repository |
Yes. Changes to a sub-directory of the repository are supported. |
Yes. |
Tracking Uncommited Changes |
Yes. |
Yes. Using svn diff |
Per-File Commit Messages |
No. Commit messages are per change. |
No. There is no such feature. |
Documentation |
Very Good (html and command line help) |
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 |
Very good. Perforce is very 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 |
Very extensive but not compatible with CVS. |
A CVS-like command set which is easy to get used to for CVS-users. |
Networking Support |
Good. (single TCP/IP socket) |
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 |
Excellent. Runs on UNIX, Mac OS, BeOS and Windows. |
Excellent. Clients and Servers work on UNIX, Windows and Mac OS X. |
Web Interface |
Yes, P4Web. |
Yes. , , , , , , , , , and perl_svn. Aside from that, the Subversion Apache service provides a rudimentary web-interface. |
Availability of Graphical User-Interfaces. |
Yes, P4Win and others based on the available libp4 library. |
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. |
Branching |
Yes |
Yes |
Tagging |
Yes |
Yes |
Visual SourceSafe vs. Subversion
SCM feature: |
Subversion |
Visual SourceSafe |
Atomic Commits |
Commits are atomic. |
No. VSS commits are not atomic. |
Files and Directories Moves or Renames |
Yes. Renames are supported. |
Affects the whole history, it's like renaming a file in the CVS repository. There is a kludgy workaround using "share-rename,move,delete" that gets what you want. |
Intelligent Merging after Moves or Renames |
No. "svn help me" says "Note: this subcommand is equivalent to a 'copy' and 'delete'." There's . |
No, renames are not intelligent. |
Remote Repository Replication |
Indirectly, by using Chia-liang Kao's add-on or Shlomi Fish' utility. |
Not directly possible with the included GUI or command line tools; ssarc and ssrestor might be useable |
Propagating Changes to Parent Repositories |
Yes, using either Chia-Ling Kao's SVN::Mirror script or the svn-push utility by Shlomi Fish. |
Not directly possible with the included GUI or command line tools; ssarc and ssrestor might be useable |
Repository Permissions |
Yes. The WebDAV-based service supports defining HTTP permissions for various directories of the repository. |
Project specific permissions (read, write, delete, destroy) can be set per user; but see "Networking Support": this makes "Repository Permissions" a hindrance to accidental damage but cannot prevent intentional damage. |
Changesets' Support |
Partial support. There are implicit changeset that are generated on each commit. |
No. Changes are file-specific. |
Tracking Line-wise File History |
Yes. (svn blame) |
Not directly, but it's possible to compare any two versions using a visual differ. |
Ability to Work only on One Directory of the Repository |
Yes. | |
Tracking Uncommited Changes |
Yes. Using svn diff |
Yes, using integrated diff tool. |
Per-File Commit Messages |
No. There is no such feature. |
Since changesets are not supported, yes. |
Documentation |
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. |
Medium. Help file which is sometimes useful. However, the interface is reasonably intuitive so documentation isn't needed as much. |
Ease of Deployment |
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. |
Very good - an installation package which does the work. When you create a repository it installs the exe's in a directory and you can run them from there if you need to. |
Command Set |
A CVS-like command set which is easy to get used to for CVS-users. |
A bit of an afterthought. It's possible to do basic things, but it's really geared up for using the GUI. |
Networking Support |
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. |
VSS uses a Windows network share which has to be writable for the VSS users (since this means doubling maintenance for new users). Add user in VSS and to share permissions. the share is most often world-writable, as is the default when creating a share) It does not perform well over a slow network connection. |
Portability |
Excellent. Clients and Servers work on UNIX, Windows and Mac OS X. |
The Microsoft Product is Windows only. ships a version of it for some UNIX platforms. |
Web Interface |
Yes. , , , , , , , , , and perl_svn. Aside from that, the Subversion Apache service provides a rudimentary web-interface. |
It is possible to code one using the API, but no official or third-party one exists. |
Availability of Graphical User-Interfaces. |
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. |
Standalone GUI comes with it, plus SCCI plug-in for MS Visual Developer Studio. There is an Eclipse plug-in. |
Branching |
Yes |
Yes |
Tagging |
Yes |
Yes |