NAME
        LCFG::Build::VCS - LCFG revision control infrastructure

VERSION
        This documentation refers to LCFG::Build::VCS version 0.0.14

SYNOPSIS
        my $vcs = LCFG::Build::VCS::CVS->new();

        $vcs->genchangelog();

        if ( $vcs->checkcommitted() ) {
          $vcs->tagversion();
        }

DESCRIPTION
    This is an interface, you should not attempt to create objects directly
    using this module. You will need to implement a sub-class, for example
    LCFG::Build::VCS::CVS. This interface requires certain attributes and
    methods be specified within any implementing sub-class, see below for
    details. For complete details you should read the documentation
    associated with the specific sub-class.

ATTRIBUTES
    module
        The name of the software package in this repository. This is
        required and there is no default value.

    workdir
        The directory in which the version-control system commands should be
        carried out. This is required and if none is specified then it will
        default to '.', the current working directory. This must be an
        absolute path but if you pass in a relative path coercion will
        automatically occur based on the current working directory.

    binpath
        The path to the version-control tool. This is required and it is
        expected that any module which implements this interface will set a
        suitable default path. This must be an absolute path.

    quiet
        This is a boolean value which controls the quietness of the
        version-control system commands. By default it is false and
        commands, such as CVS, will print lots of extra stuff to the screen.

    dryrun
        This is a boolean value which controls whether the commands will
        actually have a real effect or just print out what would be done. By
        default it is false.

    logname
        The name of the logfile to which information should be directed when
        doing version updates. This is also the name of the logfile to be
        used if you utilise the automatic changelog generation option. The
        default file name is 'ChangeLog'.

SUBROUTINES/METHODS
    checkcommitted
        Test to see if there are any uncommitted files in the project
        directory. Note this test does not spot files which have not been
        added to the version-control system. In scalar context the
        subroutine returns 1 if all files are committed and 0 (zero)
        otherwise. In list context the subroutine will return this code
        along with a list of any files which require committing.

    genchangelog
        This method will generate a changelog (the name of which is
        controlled by the logname attribute) from the log kept within the
        version-control system.

    tagversion($version)
        This method is used to tag a set of files for a project at a
        particular version. It will also update the changelog appropriately.
        The tag name is generated using the *gen_tag()* method, see below
        for full details.

    run_cmd(@args)
        A method used to handle the running of commands for the particular
        version-control system. This is required for systems like CVS where
        shell commands have to be executed. Not all modules will need to
        implement this method as they may well use a proper Perl module API
        (e.g. subversion).

    gen_tag($version)
        Generate a tag based on the package name and the specified version.
        Tags are generated from the name and version details passed in by
        replacing any hyphens or dots with underscores and joining the two
        fields with an underscore. For example, lcfg-foo and 1.0.1 would
        become lcfg_foo_1_0_1.

    logfile()
        This is a convenience method which returns the full path to the
        logfile based on the workdir and logname attributes.

DEPENDENCIES
    This module is Moose powered.

BUGS AND LIMITATIONS
    There are no known bugs in this application. Please report any problems
    to the author (see below for details), patches are very welcome.

AUTHOR
        Stephen Quinney <squinney@inf.ed.ac.uk>

LICENSE AND COPYRIGHT
        Copyright (C) 2008 by Stephen Quinney

    This library is free software; you can redistribute it and/or modify it
    under the terms of the GPL, version 2 or later.

