The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Amon2::Setup::VC::Git;
use strict;
use warnings;
use utf8;
use File::Temp qw(tempfile);

sub new {
    bless {}, $_[0];
}

sub do_import {
    my ($self) = @_;

    unless ($self->_is_git_available('git')) {
        warn "There is no git command.\n";
        return;
    }

    !system("git init") or die $?;
    !system("git add .") or die $?;
    !system(q{git commit -m "initial import"}) or die $?;
}

sub _is_git_available {
    my ($self) = @_;

    if ($^O eq 'MSWin32') {
        no warnings;
        !system('git --version 2>&1 > NUL');
    } else {
        my $pid = fork();
        die "Cannot fork: $!" if !defined $pid;
        if ($pid) { # parent
            waitpid($pid, 0);
            require POSIX;
            POSIX::WIFEXITED($?) && POSIX::WEXITSTATUS($?)==0 ? 1 : 0;
        } else { # child
            my ($logfh, $logfile) = tempfile(UNLINK => 1);
            open STDOUT, '>', $logfile or die "$!";
            open STDERR, '>&STDOUT' or die "$!";
            no warnings;
            exec('git', '--version');
            exit(9);
        }
    }
}

1;