Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477835
  • 博文数量: 122
  • 博客积分: 1403
  • 博客等级: 中尉
  • 技术积分: 1668
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-11 13:31
文章分类

全部博文(122)

文章存档

2018年(5)

2017年(12)

2014年(15)

2013年(33)

2012年(4)

2011年(53)

分类: 项目管理

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

 

阅读(708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~