---
name: "Git::Repository::Log::Iterator"
section: "3pm"
platform: "linux"
package: "libgit-repository-plugin-log-perl"
version: "1.314-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Git::Repository::Log::Iterator"
---

# Git::Repository::Log::Iterator(3pm)

Split a git log stream into records

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