VCS - (OBSOLETE, USE VCI INSTEAD) Version Control System access in Perl
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"; }
NOTE: This module has been unmaintained since 2004. It is recommended that you use the VCI module instead, which is currently maintained, supports many more VCSes, and has more features.
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.
VCS
DBI
VCS::Dir
VCS::File
VCS::Version
VCS::Cvs::Dir
VCS::Cvs::File
VCS::Cvs::Version
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.
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,
new
VCS->parse_url
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::
require "VCS/Classname.pm"
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.
This loads its given implementation class.
Please refer to the documentation for VCS::Dir, VCS::File, and VCS::Version; as well as the implementation specific documentation as in VCS::Cvs, VCS::Rcs.
Much of this information is incorrect, the current up to date version of VCS is held on a different CVS server now, i'm going to make things a little more public and then update the below information - thanks for your patience.
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/
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.
Greg McCarroll <greg@mccarroll.org.uk> Leon Brocard
Thanks to the following for patches,
Richard Clamp Pierre Denis Slaven Rezic
Copyright (c) 1998-2003 Leon Brocard & Greg McCarroll. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
VCI
VCS::Cvs, VCS::Dir, VCS::File, VCS::Rcs, VCS::Version.
To install VCS, copy and paste the appropriate command in to your terminal.
cpanm
cpanm VCS
CPAN shell
perl -MCPAN -e shell install VCS
For more information on module installation, please visit the detailed CPAN module installation guide.