/** * Fetch the commits * * @return array An array of instances of VersionControl_Git_Object_Commit */ public function fetch() { $this->setSubCommand('rev-list')->setOption('pretty', 'raw')->setArguments(array($this->target)); // Add paths to arguments foreach ($this->paths as $path) { $this->addArgument($path); } $string = $this->execute(); $lines = explode("\n", $string); $this->reset(); $commits = array(); while (count($lines)) { $commit = array_shift($lines); if (!$commit) { continue; } $tree = array_shift($lines); $parents = array(); while (count($lines) && 0 === strpos($lines[0], 'parent')) { $parents[] = array_shift($lines); } $author = array_shift($lines); $committer = array_shift($lines); $message = array(); array_shift($lines); while (count($lines) && 0 === strpos($lines[0], ' ')) { $message[] = trim(array_shift($lines)); } array_shift($lines); $commits[] = VersionControl_Git_Object_Commit::createInstanceByArray($this->git, array('commit' => $commit, 'tree' => $tree, 'parents' => $parents, 'author' => $author, 'committer' => $committer, 'message' => implode("\n", $message))); } return $commits; }
protected function getCreatedInstance() { $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); $instance = VersionControl_Git_Object_Commit::createInstanceByArray($git, array('commit' => 'commit 4ed54abb8efca38a0c794ca414b1f296279e0d85', 'tree' => 'tree cca66138995a95b45a725e8727ee97a20a816d41', 'parent' => 'parent ddf8aa7e97a206847658c90a26fe740b2e17231a', 'author' => 'author Kousuke Ebihara <*****@*****.**> 1264003801 +0900', 'committer' => 'committer Kousuke Ebihara <*****@*****.**> 1264003801 +0900')); return $instance; }