2018-09-16 00:07:31 +02:00
|
|
|
#!/usr/bin/env perl
|
2018-09-16 00:20:20 +02:00
|
|
|
# ABSTRACT: post-commit hook for managing git issues
|
|
|
|
# PODNAME: git-issue-commit-hook
|
2018-09-16 00:07:31 +02:00
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
use Try::Tiny;
|
|
|
|
use Git::IssueManager;
|
|
|
|
use Git::LowLevel;
|
|
|
|
use utf8;
|
|
|
|
|
|
|
|
#
|
|
|
|
# main program
|
|
|
|
#
|
|
|
|
|
|
|
|
my $manager = Git::IssueManager->new(repository=>Git::LowLevel->new(git_dir=> "."));
|
|
|
|
|
|
|
|
warn("IssueManager not yet initialize ignoring commit\n") unless $manager->ready();
|
|
|
|
exit(0) unless $manager->ready();
|
|
|
|
|
|
|
|
my $tag = $manager->tag();
|
|
|
|
|
|
|
|
my $help=readpipe("git log -1 HEAD");
|
|
|
|
my @lines=split /\n/, $help;
|
|
|
|
|
|
|
|
my $commit="";
|
|
|
|
for my $line (@lines)
|
|
|
|
{
|
|
|
|
#check for commit
|
|
|
|
if ($line =~ /^commit\s([0-9abcdef]+)$/)
|
|
|
|
{
|
|
|
|
$commit=$1;
|
|
|
|
}
|
|
|
|
|
|
|
|
#search for an issue tag within the commit message
|
|
|
|
if ($line =~ /($tag-[0-9abcdef]{8})/)
|
|
|
|
{
|
|
|
|
my $id=$1;
|
|
|
|
# check for all possible commit issue commands
|
|
|
|
if ($line =~ /#close/)
|
|
|
|
{
|
|
|
|
$manager->close($id, $commit);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|