Getting log history

Crawling manually commits and parents to browse history is surely a good solution. But when it comes to ordering them or aggregate them from multiple branches, we tend to use git log.

To get a Log object from a repository:

$log = $repository->getLog();

You can pass four arguments to getLog method:

// Global log for repository
$log = $repository->getLog();

// Log for master branch
$log = $repository->getLog('master');

// Returns last 10 commits on README file
$log = $repository->getLog('master', 'README', 0, 10);

// Returns last 10 commits on README or UPGRADE files
$log = $repository->getLog('master', array('README', 'UPGRADE'), 0, 10);

Counting

If you want to count overall commits, without offset or limit, use the countCommits method:

echo sprintf("This log contains %s commits\n", $log->countCommits());

// Countable interface
echo sprintf("This log contains %s commits\n", count($log));

Offset and limit

Use those methods:

$log->setOffset(32);
$log->setLimit(40);

// or read it:
$log->getOffset();
$log->getLimit();