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', ['README', 'UPGRADE'], 0, 10);
If you want to count overall commits, without offset or limit, use the countCommits method:
echo sprintf('This log contains %s commits%s', $log->countCommits(), PHP_EOL);
// Countable interface
echo sprintf('This log contains %s commits%s', count($log), PHP_EOL);
Use those methods:
$log->setOffset(32);
$log->setLimit(40);
// or read it:
$log->getOffset();
$log->getLimit();