---
name: "VCS::File"
section: "3pm"
platform: "linux"
package: "libvcs-perl"
version: "0.14-4"
release: "Debian 4.0 (Etch)"
platforms: ["linux"]
url: "https://new.carta.tech/VCS::File"
---

# VCS::File(3pm)

VCS::File - module for access to a file under version control

```
    use VCS;
    my $f = VCS::File->new($url);
    print $f->url . "\n";
    foreach my $v ($f->versions) {
        print "\tversion: " . $v->version . "\t" . ref($v) . "\n";
    }
```

`"VCS::File"` abstracts access to a file under version control. Methods marked with a "\*" are not yet finalised/implemented.\
 **VCS::File-\>create\_new($name) \*** `$name` is a file name, absolute or relative.  Creates data as appropriate to convince the VCS that there is a file, and returns an object of class `"VCS::File"`, 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 (an exception ("`"die"`") will result).\
 **VCS::File-\>introduce($version\_args) \*** `$version_args` is a hash-ref, see VCS::Version for details. Implementation classes are expected to use something similar to this code, to call create\_new in the right `"VCS::Version"` subclass:

```
    sub introduce {
        my ($class, $version_args) = @_;
        my $call_class = $class;
        $call_class =~ s/[^:]+$/Version/;
        return $call_class->create_new($version_args);
    }
```

This is a pure virtual method, which must be over-ridden, and cannot be called directly in this class (a `"die"` will result).\
 **VCS::File-\>new($url)** `$url` is a file URL.  Returns an object of class `"VCS::File"`, or throws an exception if it fails. Normally, an override of this method will call `"VCS::File->init($url)"` to make an object, and then add to it as appropriate.\
 **VCS::File-\>***tags()* Returns a reference to a hash that has keys that are any tags attached to the file and the values are the corresponding versions which the tags refer to.\
 **VCS::File-\>***tags\_hash()* Cvs ONLY Same as for -\>.\
 **VCS::File-\>***tags\_array()* Cvs ONLY Returns an array of tags that are connected with the file, this is useful alongside *tags\_hash()* as it allows you to inspect the order in which tags were applied.\
 **VCS::File-\>init($url)** `$url` is a file URL. Returns an object of class `"VCS::File"`. This method calls `"VCS->parse_url"` to make sense of the URL.\
 **$file-\>url** Returns the `$url` argument to `"new"`.\
 **$file-\>versions** Returns a list of objects of class `"VCS::Version"`, in order of ascending revision number. If it is passed an extra (defined) argument, it only returns the last version as a `"VCS::Version"`.\
 **$file-\>path** Returns the absolute path of the file. VCS. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
