A table of various SCM software and their support for requirements as listed on the mailing list by Mark Wedel. | ^ CVS ^ SVN ^ Mercurial ^ Bzr ^ Darcs ^ ^ Protocol | dedicated | webdav-based | http-based/ssh | http-based/sftp | http-based/email/ssh((requires wrapper script)) | ^ Learning curve from CVS((a bit subjective perhaps)) | none | low | low-medium | medium | high | ^ Key requirements | | | | | | ^ Network based access | Yes | Yes | Yes | Yes | Yes | ^ Multiplatform | Yes | Yes | Yes | Yes | Yes((windows only via Cygwin)) | ^ Access control lists | Yes | Yes | Yes((via SSH, or HTTP server permissions as of hg 0.9.1)) | Yes((via SSH)) | Yes((via SSH)) | ^ Read-only access to everyone | Yes | Yes | Yes | Yes | Yes | ^ Supported by sourceforge or some other free hosting service | Yes | Yes | Depends((only if a free hosting service other than sf.net has sufficient web space with ssh)) | Yes((Launchpad.net or possibly somewhere with sufficient web space with ssh)) | Depends((only if a free hosting service other than sf.net has sufficient web space with ssh)) | ^ E-mail notification of commits | Yes | Yes | Yes((via standardly distributed extension)) | Yes((via plugin)) | Yes | ^ Ability to convert to CVS to whatever the new format is | N/A | Yes | Yes | Yes | Yes | ^ Top Features: | | | | | | ^ Readily available/easily installable software | Yes | Yes | Yes | Yes | No((written in Haskell)) | ^ Tracking of when merges are done | No | No | Yes | Yes | Yes | ^ Good branch handling | No | No | Yes | Yes | Yes | ^ Efficient use of resources (network bandwidth, cpu, etc) | Yes | Yes | Mostly((No lightweight checkout, you must use local branches (However I am currently working on a Mercurial extension to provide this regardless of if we use mercurial or not, so this limitation may no longer exist in the near future) )) | No((Too many separate http requests causing significant amounts of time establishing connections and DNS lookups)) | No | ^ Global revisioning | No | Yes | Yes | Yes | Yes | ^ support for symbolic tagging within one repository | Yes | No | Yes | No | Yes | ^ Other nice to have features: | | | | | | ^ Atomic checkins | No | Yes | Yes | Yes | Yes | ^ Maximum ability to do SCCS operations without access to repository | No | Yes((limited to diff, unget, and status)) | Yes((via local branches)) | Yes((via local branches)) | Yes((via local branches)) | ^ good binary file handling | No | Yes | Yes | Yes | Yes | ^ Ability to do local branches | No | No | Yes | Yes | Yes | ^ Rename support | No | Yes | Partial((Merges don't follow renames, and logging does not report it))| Yes | Yes | ^ Web view of repository | Yes | Yes | Yes((builtin)) | Yes | Yes | ^ Possible to make a read-only cvs mirror | N/A | Yes((via 'tailor')) | Yes((via 'tailor')) | Yes((via 'tailor')) | Yes((via 'tailor')) | --- //[[alex_sch@telus.net|Alex Schultz]] 2006/08/14 15:57//