| "'".$this->mediumtree_fmt."'",␊ |
| escapeshellarg($commit));␊ |
| }␊ |
| $out = array();␊ |
| $cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;␊ |
| self::exec('IDF_Scm_Git::getCommit', $cmd, $out, $ret);␊ |
| if ($ret != 0 or count($out) == 0) {␊ |
| $out = self::shell_exec('IDF_Scm_Git::getCommit', $cmd);␊ |
| if (strlen($out) == 0) {␊ |
| return false;␊ |
| }␊ |
| if ($getdiff) {␊ |
| $log = array();␊ |
| $change = array();␊ |
| $inchange = false;␊ |
| foreach ($out as $line) {␊ |
| if (!$inchange and 0 === strpos($line, 'diff --git a')) {␊ |
| $inchange = true;␊ |
| }␊ |
| if ($inchange) {␊ |
| $change[] = $line;␊ |
| } else {␊ |
| $log[] = $line;␊ |
| }␊ |
| }␊ |
| $out = self::parseLog($log);␊ |
| $out[0]->diff = implode("\n", $change);␊ |
| ␊ |
| $diffStart = strpos($out, 'diff --git a');␊ |
| $diff = '';␊ |
| if ($diffStart !== false) {␊ |
| $log = substr($out, 0, $diffStart);␊ |
| $diff = substr($out, $diffStart);␊ |
| } else {␊ |
| $out = self::parseLog($out);␊ |
| $out[0]->diff = '';␊ |
| $log = $out;␊ |
| }␊ |
| ␊ |
| $out = self::parseLog(preg_split('/\r\n|\n/', $log));␊ |
| $out[0]->diff = $diff;␊ |
| $out[0]->branch = implode(', ', $this->inBranches($out[0]->commit, null));␊ |
| return $out[0];␊ |
| }␊ |