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

# VCS::Version(3pm)

VCS::Version - module for access to a VCS version

```
    use VCS;
    die "Usage: $0 file-url\ne.g.: vcs://localhost/VCS::Rcs/file/name/1.2\n"
        unless @ARGV == 1;
    my $version = VCS::Version->new(@ARGV);
    print "Methods of \$version:\n",
        "url: ", $version->url, "\n",
        "author: ", $version->author, "\n",
        "version: ", $version->version, "\n",
        ;
```

VCS::Version abstracts a single revision of a file under version control. Methods marked with a "\*" are not yet finalised/implemented.\
 **VCS::Version-\>create\_new(@version\_args) \*** `@version_args` is a list which will be treated as a hash, with contents as follow:

```
    @version_args = (
        name    => 'a file name',
        version => 'an appropriate version identifier',
        tags    => [ 'A_TAG_NAME', 'SECOND_TAG' ],
        author  => 'the author name',
        reason  => 'the reason for the checkin',
        text    => 'either literal text, or a ref to the filename',
    );
```

This is a pure virtual method, which must be over-ridden, and cannot be called directly in this class (a `"die"` will result).\
 **VCS::Version-\>new($url)** `$url` is a VCS URL, of the format:

```
    vcs://localhost/VCS::Rcs/file/name/1.2
```

The version is a version number, or tag. Returns an object of class `"VCS::Version"`, or throws an exception if it fails. Normally, an override of this method will call `"VCS::Version->init($url)"` to make an object, and then add to it as appropriate.\
 **VCS::Version-\>init($url)** `$url` is a version URL. Returns an object of class `"VCS::Version"`. This method calls `"VCS->parse_url"` to make sense of the URL.\
 **$version-\>url** Returns the `$url` argument to `"new"`.\
 **$version-\>version** Returns the `$version` argument to `"new"`.\
 **$version-\>tags** Returns a list of tags applied to this version.\
 **$version-\>text** Returns the text of this version of the file.\
 **$version-\>diff($other\_version)** Returns the differences (in `"diff -u"` format) between this version and the other version. Currently, the other version must also be a `"VCS::Version"` object.\
 **$version-\>author** Returns the name of the user who checked in this version.\
 **$version-\>date** Returns the date this version was checked in.\
 **$version-\>reason** Returns the reason given on checking in this version.\
 **$version-\>path** Returns the absolute path of the file to which this version relates. VCS. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
