示例#1
0
 /**
  * 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;
 }