NAME
VCS::Dir - module for access to a VCS directory
SYNOPSIS
use VCS;
my $d = VCS::Dir->new($url);
print $d->url . "\n";
foreach my $x ($d->content) {
print "\t" . $x->url . "\t" . ref($x) . "\n";
}
DESCRIPTION
VCS::Dir
abstracts access to a directory under version control.
METHODS
Methods marked with a "*" are not yet finalised/implemented.
VCS::Dir->create_new($url) *
$url
is a file-container URL. Creates data as appropriate to convince the VCS that there is a file-container, and returns an object of class VCS::Dir
, or throws an exception if it fails. This is a pure virtual method, which must be over-ridden, and cannot be called directly in this class (a die
will result).
VCS::Dir->introduce($name, $create_class) *
$name
is a file or directory name, absolute or relative. $create_class
is either File
or Dir
, and implementation classes are expected to use something similar to this code, to call the appropriate create_new:
sub introduce {
my ($class, $name, $create_class) = @_;
my $call_class = $class;
$call_class =~ s/[^:]+$/$create_class/;
return $call_class->create_new($name);
}
This is a pure virtual method, which must be over-ridden, and cannot be called directly in this class (a die
will result).
VCS::Dir->new($url)
$url
is a file-container URL. Returns an object of class VCS::Dir
, or throws an exception if it fails. Normally, an override of this method will call VCS::Dir->init($url)
to make an object, and then add to it as appropriate.
VCS::Dir->init($url)
$url
is a file-container URL. Returns an object of class VCS::Dir
. This method calls VCS->parse_url
to make sense of the URL.
$dir->url
Returns the $url
argument to new
.
$dir->content
Returns a list of objects, either of class VCS::Dir
or VCS::File
, corresponding to files and directories within this directory.
$dir->path
Returns the absolute path of the directory.
$dir->read_dir($dir)
Returns the contents of the given filesystem directory. This is intended as a utility method for subclasses.
SEE ALSO
VCS.
COPYRIGHT
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.