           SPELL=mcvs
         VERSION=1.1.0
          SOURCE=$SPELL-$VERSION.tar.gz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
   SOURCE_URL[0]=http://users.footprints.net/~kaz/$SOURCE
     SOURCE_HASH=sha512:c3e99516de792a0efdfe9f7068a6d4fc3225133327102552bfc5a1e7949944137a23e44de9ca8d79b787cc18c3b23b95852d1ebb93d8124b3fea039550cc0c27
      LICENSE[0]=GPL
        WEB_SITE=http://users.footprints.net/~kaz/mcvs.html
         ENTERED=20040117
        KEYWORDS="cvs devel"
           SHORT='Meta-CVS is a version control system built around CVS'
cat << EOF
Meta-CVS is a version control system built around CVS. Although it retains most of the features of CVS, including all of the networking support, it is more capable than CVS, and easier to use. Its main features are:

#  Directory structure versioning. Under Meta-CVS, the directory structure of a project is versioned in the same way as the contents of its files. Concurrent changes to the directory structure are permitted. It can be branched, and merged. The program dynamically rearranges the structure of the sandbox as you obtain updates from the repository, switch branches or retrieve old revisions.

# User-friendly file type handling. Meta-CVS interactively handles file types when files are imported or added. It remembers, for instance, that .png files are considered binary so that when new instances of them are added, they are automatically treated as binary.

# Sane corner cases. Meta-CVS handles the use case when two or more developers add a file of the same name to the same location. It handles the case when someone removes a file that someone else is modifying. It handles the case of files being removed and later added with a different keyword expansion mode. It handles names containing spaces. All of these cause problems in CVS, but not in Meta-CVS, because Meta-CVS simply avoids feeding CVS the patterns of use and troublesome inputs that tickle the CVS bugs.

# Simple branching and merging. Creating a branch, switching among branches and merging are simple commands that take one argument. The software keeps track of what has been merged where from what branch. Thus Meta-CVS makes it easy to manage multiple lines of development.

# Support for symbolic links and meta-data. Symbolic links are versioned objects in Meta-CVS. Files and symbolic links can have attached property lists, which are versioned. One standard property determines whether or not a file is executable, so in this way Meta-CVS versions the execute permission.

# Tracking of third party code containing moves and renames. Meta-CVS has an importing feature called ``grab'' similar in concept to CVS vendor branches, but with significant differences. When a snapshot of code is grabbed onto a branch, the program analyzes the contents of apparently added and removed files to determine which of them are actually moves. An ordinary branch is used, not CVS vendor branches, which are deprecated in Meta-CVS. Ordinary branches can shoot from anywhere, not just version 1.1 of every file, so third party ``grab branches'' representing multiple sources are possible. The grab feature can be used to reconstruct the restructuring history of old projects, provided that a sequence of snapshots is available. Then it's possible to apply standard version control tricks, like fix a bug in an old version, and merge it to the latest, despite renamed or moved files.

# Ease of deployment. The software doesn't require any repository-side installation; it uses the CVS client interface only. If you have write access to a remote CVS repository, you can install it on your client system and create a Meta-CVS module stored on the remote repository.
EOF
