NAME
Git::Repository::Log::Iterator - Split a git log stream into records
SYNOPSIS
# 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.