protected function doParse()
{
$this->consume('tree ');
$this->tree = $this->consumeHash();
$this->consumeNewLine();
$this->parents = array();
while ($this->expects('parent ')) {
$this->parents[] = $this->consumeHash();
$this->consumeNewLine();
}
$this->consume('author ');
list($this->authorName, $this->authorEmail, $this->authorDate) = $this->consumeNameEmailDate();
$this->authorDate = $this->parseDate($this->authorDate);
$this->consumeNewLine();
$this->consume('committer ');
list($this->committerName, $this->committerEmail, $this->committerDate) = $this->consumeNameEmailDate();
$this->committerDate = $this->parseDate($this->committerDate);
// will consume an GPG signed commit if there is one
$this->consumeGPGSignature();
$this->consumeNewLine();
$this->consumeNewLine();
$this->message = $this->consumeAll();
}