NAME
   Perl::Build::Git - Convenience extensions for Perl::Build for bulk git
   work

VERSION
   version 0.001000

SYNOPSIS
   This is something that might be useful to call in a git bisect runner

       use Perl::Build::Git;
       my $man         = [qw( man1dir man3dir siteman1dir siteman3dir  )];
       my $no_man_opts = [ map { '-D' . $_ . '=none' } @{$man} ];
       my $install = Perl::Build::Git->install_git(
               persistent => 1,
               preclean   => 1,
               cache_root => '/tmp/perls/',
               git_root   => '/path/to/git/checkout',
               configure_options => [
                   '-de',               # quiet automatic
                   '-Dusedevel',        # "yes, ok, its a development version"
                   @{$no_man_opts},     # man pages are ugly
                   '-U versiononly',    # use bin/perl, not bin/perl5.17.1
               ],
       );
       $install->run_env(sub{
               # Test Case Here
               exit 255 if $failed;
       });
       exit 0;

   "persistent = 1" is intended to give each build its own unique
   directory, such as

       /tmp/perls/v5.17.10-44-g97927b0/

   So that if you do multiple bisects, ( for the purpose of testing which
   incarnation of "perl" some module fails in ), testing against a "perl"
   that was previously tested against in a previous bisect should return a
   cached result, greatly speeding up the bisect ( at the expense of disk
   space ).

METHODS
 install_git
       Perl::Build::Git->install_git(
           cache_root => '/some/path',
           git_root   => '/some/path/to/perl/git',
           persistent => bool,
           preclean   => bool,
           quiet      => bool,
           log_output => filehandle,
           log        => coderef,
       );

   *   "cache_root"

       path. This should be a path to an existent base working directory to
       install multiple "perl" installs to

       Perl builds will either be in the form of

           <cacheroot>/<tag>-g<sha1abbrev>

       or

           <cacheroot>/<tag>-g<sha1abbrev>-<SUFFIX>

       depending on "persistent"

   *   "git_root"

       path.

       This should be a path to an existing "perl" "git" checkout.

   *   "persistent"

       "bool".

       Whether to make the build directory persistent or not. Persistent
       directories can be optimistically re-used, while non-persistent ones
       can not.

       Non Persistent directories also have a random component added to
       their path, and implied cleanup on exit.

       Default is NOT PERSISTENT

   *   "preclean"

       "bool".

       Whether to execute a pre-build cleanup of the git working directory.

       This at present executes a mash of "git checkout", "git reset" and
       "git clean".

       Default is PRE-CLEAN GIT TREE

   *   "quiet"

       "bool".

       If specified, the default method for "log" is a no-op.

       The default is NOT QUIET

   *   "log_output"

       "filehandle".

       Destination to write log messages to.

       Default is *STDERR

   *   "log"

       "coderef". Handles dispatch from logging mechanisms, in the form

           $logger->( $color_spec , @message );

       where color_spec is anything that "Term::ANSIColor::colored"
       understands.

           $logger->( ['red'], "this", "is", "a" , "test" );

       Default implementation writes to "log_output" formatting @message
       via "Term::ANSIColor".

AUTHOR
   Kent Fredric <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2013 by Kent Fredric
   <[email protected]>.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.