NAME

Git::Repository::Log::Iterator - Split a git log stream into records

SYNOPSIS

use Git::Repository::Log::Iterator;

# use a default Git::Repository context
my $iter = Git::Repository::Log::Iterator->new('HEAD~10..');

# or provide an existing instance
my $iter = Git::Repository::Log::Iterator->new( $r, 'HEAD~10..' );

# get the next log record
while ( my $log = $iter->next ) {
    ...;
}

DESCRIPTION

Git::Repository::Log::Iterator initiates a git log command from a list of paramaters and parses its output to produce Git::Repository::Log objects represening each log item.

METHODS

new

my $iter = Git::Repository::Log::Iterator->new( @args );

Create a new git log stream from the parameter list in @args and return a iterator on it.

new() will happily accept any parameters, but note that Git::Repository::Log::Iterator expects the output to look like that of --pretty=raw, and so will force the the --pretty option (in case format.pretty is defined in the Git configuration). It will also forcibly remove colored output (using --color=never).

Extra output (like patches) will be stored in the extra parameter of the Git::Repository::Log object. Decorations will be lost.

When unsupported options are recognized in the parameter list, new() will croak() with a message advising to use run( 'log' => ... ) to parse the output yourself.

The object is really a blessed hash reference, with only two keys:

cmd

The Git::Repository::Command object running the actual git log command. It might not be defined in some cases (see below "new_from_fh" and "new_from_file").

fh

The filehandle from which the output of git log is actually read. This is the only attribute needed to run the "next" method.

new_from_fh

This constructor makes it possible to provide the filehandle directly.

The cmd key is not defined when using this constructor.

new_from_file

This constructor makes it possible to provide a filename that will be open()ed to produce a filehandle to read the log stream from.

The cmd key is not defined when using this constructor.

next

my $log = $iter->next;

Return the next log item as a Git::Repository::Log object, or nothing if the stream has ended.

COPYRIGHT

Copyright 2010-2016 Philippe Bruhat (BooK), all rights reserved.

LICENSE

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