Scroll to navigation

Git::Repository::Log::Iterator(3pm) User Contributed Perl Documentation Git::Repository::Log::Iterator(3pm)


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


    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 ) {


"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.



    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:

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").
The filehandle from which the output of git log is actually read. This is the only attribute needed to run the "next" method.


This constructor makes it possible to provide the filehandle directly.

The "cmd" key is not defined when using this constructor.


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.


    my $log = $iter->next;

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


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


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

2022-06-14 perl v5.34.0