NAME
   VCS - Library for generic Version Control System access in Perl

SYNOPSIS
       use VCS;
       $file = VCS::File->new($ARGV[0]);
       print $file->url, ":\n";
       for $version ($file->versions) {
           print $version->version,
                 ' was checked in by ',
                 $version->author,
                 "\n";
       }

DESCRIPTION
   `VCS' is an API for abstracting access to all version control systems
   from Perl code. This is achieved in a similar fashion to the `DBI' suite
   of modules. There are "container" classes, `VCS::Dir', `VCS::File', and
   `VCS::Version', and "implementation" classes, such as `VCS::Cvs::Dir',
   `VCS::Cvs::File', and `VCS::Cvs::Version', which are subclasses of their
   respective "container" classes.

   The container classes are instantiated with URLs. There is a URL scheme
   for entities under version control. The format is as follows:

       vcs://localhost/VCS::Cvs/fs/path/?query=1

   The "query" part is ignored for now. The path must be an absolute path,
   meaningful to the given class. The class is an implementation class,
   such as `VCS::Cvs'.

   The "container" classes work as follows: when the `new' method of a
   container class is called, it will parse the given URL, using the
   `VCS->parse_url' method. It will then call the `new' of the
   implementation's appropriate container subclass, and return the result.
   For example,

       VCS::Version->new('vcs://localhost/VCS::Cvs/fs/path/file/1.2');

   will return a `VCS::Cvs::Version'.

   An implementation class is recognised as follows: its name starts with
   `VCS::', and `require "VCS/Classname.pm"' will load the appropriate
   implementation classes corresponding to the container classes.

VCS METHODS
 VCS->parse_url

   This returns a four-element list:

       ($hostname, $classname, $path, $query)

   For example,

       VCS->parse_url('vcs://localhost/VCS::Cvs/fs/path/file/1.2');

   will return

       (
           'localhost',
           'VCS::Cvs',
           '/fs/path/file/1.2',
           ''
       )

   This is mostly intended for use by the container classes, and its
   interface is subject to change.

 VCS->class_load

   This loads its given implementation class.

   This is mostly intended for use by the container classes, and its
   interface is subject to change.

VCS::* METHODS
   Please refer to the documentation for the VCS::Dir manpage, the
   VCS::File manpage, and the VCS::Version manpage; as well as the
   implementation specific documentation as in the VCS::Cvs manpage, the
   VCS::Rcs manpage.

AVAILABILITY
   VCS.pm and its friends are available from CPAN. There is a web page at:

       http://www.astray.com/VCS/

   as well as a sourceforge project page at:

       http://sourceforge.net/projects/vcs/

MAILING LIST
   There is currently a mailing list about VCS. Go to the following webpage
   to subscribe to it:

       http://www.astray.com/mailman/listinfo/vcs

   There is a web archive of the mailing list at:

       http://www.astray.com/pipermail/vcs/

   General queries should be made directly to the mailing list.

COPYRIGHT
   Copyright (c) 1998-2001 Leon Brocard. All rights reserved. This program
   is free software; you can redistribute it and/or modify it under the
   same terms as Perl itself.

SEE ALSO
   the VCS::Cvs manpage, the VCS::Dir manpage, the VCS::File manpage, the
   VCS::Rcs manpage, the VCS::Version manpage.