App::KGB::Client::Git - Git supprot for KGB client


my $c = App::KGB::Client::Git->new({ ... git_dir => '/some/where', # defaults to $ENV{GIT_DIR} old_rev => 'a7c42f58', new_rev => '8b37ed8a', });


App::KGB::Client::Git provides KGB client with knowledge about Git repositories. Its method returns a series of App::KGB::Commit objects, each corresponding to the next commit of the received series.


App::KGB::Client::Git->new( { parameters... } )

Input data can be given in any of the following ways:

as parameters to the constructor
    # a single commit
    my $c = App::KGB::Client::Git->new({
        old_rev => '9ae45bc',
        new_rev => 'a04d3ef',
        refname => 'master',
as a list of revisions/refnames
    # several commits
    my $c = App::KGB::Client::Git->new({
        changesets  => [
            [ '4b3d756', '62a7c8f', 'master' ],
            [ '7a2fedc', '0d68c3a', 'my'     ],

All the other ways to supply the changes data is converted internally to this one.

in a file whose name is in the reflog parameter

A file name of - means standard input, which is the normal way for Git post-receive hooks to get the data.

The file must contain three words separated by spaces on each line. The first one is taken to be the old revision, the second is the new revision and the third is the refname.

on the command line

Useful when testing the KGB client from the command line. If neither old_rev, new_rev, refname nor changesets is given to the constructor, and if @ARGV has exactly three elements, they are taken to be old revision, new revision and refname respectively. Only one commit can be represented on the command line.

In all of the above methods, the location of the .git directory can be given in the git_dir parameter, or it will be taken from the environment variable GIT_DIR.



Returns an instance of App::KGB::Change class for each commit. Returns undef when all commits were processed.


Copyright (c) 2009 Damyan Ivanov

Based on the shell post-recieve hook by Andy Parkins

This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.