NAME

    LCFG::Build::VCS::None - LCFG build tools for filesystem based version-control

VERSION

    This documentation refers to LCFG::Build::VCS::None version 0.3.9

SYNOPSIS

    my $dir = ".";

    my $spec = LCFG::Build::PkgSpec->new_from_metafile("$dir/lcfg.yml");

    my $vcs = LCFG::Build::VCS::None->new( module  => $spec->fullname,
                                           workdir => $dir );

    $vcs->genchangelog();

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

DESCRIPTION

This is part of a suite of tools designed to provide a standardised interface to version-control systems so that the LCFG build tools can deal with project version-control in a high-level abstract fashion.

This module implements the interface specified by LCFG::Build::VCS. It provides support for a really simple filesystem-based version-control system. The working copy can be "tagged" at a particular release with copies of the source tree being made in a tag directory. Support is also provided for exporting these tagged releases. The aim of this module is to provide the minimum necessary to manage the release and build of LCFG packages without requiring a true version-control system such as CVS.

More information on the LCFG build tools is available from the website http://www.lcfg.org/doc/buildtools/

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 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.

tagdir

This is the directory into which exported 'tags' of the working copy should be placed. If it is not specified then the directory above the specified the working directory will be used. This should be an absolute path, if a relative path is given it will be converted.

quiet

This is a boolean value which controls the quietness of the various methods. By default it is false. This currently does not have much effect on this module but it might in the future.

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()

This is a no-op for simple filesystem-based version control as there is no concept of changes to a file having been committed to a repository.

genchangelog()

This is a no-op for simple filesystem-based version control as there is no revision-control system log from which to generate the logfile.

tagversion($version)

This method is used to tag a set of files for a project at a particular version. The source tree will be copied into a directory named after the tag within the directory specified with the tagdir option. It will also update the changelog appropriately. Tags are generated using the gen_tag() method, see below for details.

gen_tag($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.

run_cmd(@args)

This is a no-op as the simple filesystem-based version control does not require a separate binary to carry out commands.

export( $version, $builddir )

This will export a particular tagged version of the module. You need to specify the target "build" directory into which the exported tree will be put. The exported tree will be named like "modulename-version". For example:

  my $vcs = LCFG::Build::VCS::None->new(module => "lcfg-foo");
  $vcs->export( "1.2.3", "/tmp" );

Would give you an exported tree of code for the lcfg-foo module tagged as lcfg_foo_1_2_3 and it would be put into /tmp/lcfg-foo-1.2.3/

For the export method to be successful you must have already "tagged" a release using the tagversion method.

This method returns the name of the directory into which the tree was exported.

export_devel( $version, $builddir )

This is similar to the export method. It takes the current working tree for a module and exports it directly to another tree based in the specified target "build" directory. For example:

  my $vcs = LCFG::Build::VCS::None->new(module => "lcfg-foo");
  $vcs->export_devel( "1.2.3_dev", "/tmp" );

Would give you an exported tree of code for the lcfg-foo module directory and it would be put into /tmp/lcfg-foo-1.2.3_dev/

This method returns the name of the directory into which the tree was exported.

logfile()

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

checkout_project()

This is not currently supported. You probably want to use the export method instead.

import_project()

This is a no-op as there is no concept of "importing" a project into the simple filesystem-based version control system.

DEPENDENCIES

This module is Moose powered and it depends on LCFG::Build::VCS. It also requires File::Copy::Recursive

SEE ALSO

LCFG::Build::PkgSpec, LCFG::Build::VCS::CVS, LCFG::Build::Tools

PLATFORMS

This is the list of platforms on which we have tested this software. We expect this software to work on any Unix-like platform which is supported by Perl.

FedoraCore5, FedoraCore6, ScientificLinux5

BUGS AND LIMITATIONS

There are no known bugs in this application. Please report any problems to bugs@lcfg.org, feedback and patches are also always very welcome.

AUTHOR

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

LICENSE AND COPYRIGHT

Copyright (C) 2008 University of Edinburgh. All rights reserved.

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