From 6b4192dd74a3e9741f1ddf953596ac0c8d55c5c5 Mon Sep 17 00:00:00 2001 From: Dominik Meyer Date: Sun, 16 Sep 2018 00:07:31 +0200 Subject: [PATCH] ADD: added post-commit hook for managing issues --- bin/git-issue-commit-hook | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 bin/git-issue-commit-hook diff --git a/bin/git-issue-commit-hook b/bin/git-issue-commit-hook new file mode 100755 index 0000000..0fdb671 --- /dev/null +++ b/bin/git-issue-commit-hook @@ -0,0 +1,42 @@ +#!/usr/bin/env perl +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); + } + } +}