| escapeshellarg($this->repo),␊ |
| escapeshellarg($hash));␊ |
| $ret = 0; $out = array();␊ |
| IDF_Scm::exec($cmd, &$out, &$ret);␊ |
| IDF_Scm::exec($cmd, $out, $ret);␊ |
| if ($ret != 0) return false;␊ |
| return trim($out[0]);␊ |
| }␊ |
|
| $rawlog = array();␊ |
| $cmd = sprintf('GIT_DIR=%s git log --raw --abbrev=40 --pretty=oneline %s',␊ |
| escapeshellarg($this->repo), escapeshellarg($commit));␊ |
| IDF_Scm::exec($cmd, &$rawlog);␊ |
| IDF_Scm::exec($cmd, $rawlog);␊ |
| // We reverse the log to be able to use a fixed efficient␊ |
| // regex without back tracking.␊ |
| $rawlog = implode("\n", array_reverse($rawlog));␊ |
|
| // information as possible.␊ |
| $matches = array();␊ |
| if ($file->type == 'blob' and preg_match('/^\:\d{6} \d{6} [0-9a-f]{40} '.$file->hash.' .*^([0-9a-f]{40})/msU',␊ |
| $rawlog, &$matches)) {␊ |
| $rawlog, $matches)) {␊ |
| $fc = $this->getCommit($matches[1]);␊ |
| $file->date = $fc->date;␊ |
| $file->log = $fc->title;␊ |
|
| escapeshellarg($tree));␊ |
| $out = array();␊ |
| $res = array();␊ |
| IDF_Scm::exec($cmd, &$out);␊ |
| IDF_Scm::exec($cmd, $out);␊ |
| foreach ($out as $line) {␊ |
| list($perm, $type, $hash, $size, $file) = preg_split('/ |\t/', $line, 5, PREG_SPLIT_NO_EMPTY);␊ |
| $res[] = (object) array('perm' => $perm, 'type' => $type, ␊ |
|
| escapeshellarg($this->repo), ␊ |
| escapeshellarg($commit));␊ |
| $out = array();␊ |
| IDF_Scm::exec($cmd, &$out);␊ |
| IDF_Scm::exec($cmd, $out);␊ |
| foreach ($out as $line) {␊ |
| list($perm, $type, $hash, $size, $file) = preg_split('/ |\t/', $line, 5, PREG_SPLIT_NO_EMPTY);␊ |
| if ($totest == $file) {␊ |
|
| {␊ |
| $out = array();␊ |
| IDF_Scm::exec(sprintf('GIT_DIR=%s git branch', ␊ |
| escapeshellarg($this->repo)), &$out);␊ |
| escapeshellarg($this->repo)), $out);␊ |
| $res = array();␊ |
| foreach ($out as $b) {␊ |
| $res[] = substr($b, 2);␊ |
|
| "'".$this->mediumtree_fmt."'", ␊ |
| escapeshellarg($commit));␊ |
| $out = array();␊ |
| IDF_Scm::exec($cmd, &$out);␊ |
| IDF_Scm::exec($cmd, $out);␊ |
| $log = array();␊ |
| $change = array();␊ |
| $inchange = false;␊ |
|
| escapeshellarg($this->repo), $n, $this->mediumtree_fmt, ␊ |
| escapeshellarg($commit));␊ |
| $out = array();␊ |
| IDF_Scm::exec($cmd, &$out);␊ |
| IDF_Scm::exec($cmd, $out);␊ |
| return self::parseLog($out, 4);␊ |
| }␊ |
| ␊ |