Subversion and Meta-CVS Comparison Table

Subversion Meta-CVS
atomic transactions Yes No1
efficient (constant-time)
tagging
Yes No
efficient treatment
of binary files
Yes No
client sends deltas to
server when comitting
Yes No
composition of multiple modules
into one working sandbox
Yes No
renaming, moving No2 Yes
versioned user-defined properties
and execute permissions
Yes Yes3
symbolic links versioned No4 Yes
annotate feature No4 Yes
third party importing with
automatic rename analysis
No Yes
tracking of what is merged
for easy repeated merges
No4 Yes
graphical user interface Yes5 No
production use stability No6 Yes
  1. Note that this table is referring to atomicity with respect to failures, not ordinary multi-user mutual exclusion, which is well supported by CVS. CVS commit and tagging operations are mutually exclusive within directories, and consequently the corresponding Meta-CVS operations are mutually exclusive project-wide. CVS operations are atomic with respect to failure at the granularity of individual files, not at the broader granularity of multi-file operations. There is some activity now to add atomicity to CVS. See this Usenet posting at Google groups by a CVS maintainer. The CVSNT project has already added atomic commits to CVS. If you use Meta-CVS with a CVSNT server, you get this feature.
  2. Supported in theory, but there are issues related to renaming; they are documented in the Subversion issue database.
    They can be viewed by querying that database for issues containing ``rename'' in their description field. Also see this mailing list posting by one of the Subversion authors, which explains that the software currently does not have real renaming.
  3. Meta-CVS attaches no properties to directories, since they are, paradoxically, not versioned elements at all.
  4. Planned as a feature after Subersion 1.0 release.
  5. Provided by RapidSVN project.
  6. Search the Subversion development mailing list archives for subject lines containing words like stability, crash, core, fail, fault,
    corruption, segmentation, segfault, deadlock, buffer, overrun and overflow.