| if (count($options) > 0)␊ |
| {␊ |
| $cmd = "o";␊ |
| foreach ($options as $k => $v)␊ |
| foreach ($options as $k => $vals)␊ |
| {␊ |
| $cmd .= strlen((string)$k) . ":" . (string)$k;␊ |
| $cmd .= strlen((string)$v) . ":" . (string)$v;␊ |
| if (!is_array($vals))␊ |
| $vals = array($vals);␊ |
| ␊ |
| foreach ($vals as $v)␊ |
| {␊ |
| $cmd .= strlen((string)$k) . ":" . (string)$k;␊ |
| $cmd .= strlen((string)$v) . ":" . (string)$v;␊ |
| }␊ |
| }␊ |
| $cmd .= "e ";␊ |
| }␊ |
|
| ++$valCount;␊ |
| }␊ |
| }␊ |
| ␊ |
| for ($i = 0; $i <= $valCount; $i++)␊ |
| {␊ |
| $stanzaLine['values'][$i] = str_replace(␊ |
| array("\\\\", "\\\""),␊ |
| array("\\", "\""),␊ |
| $stanzaLine['values'][$i]␊ |
| );␊ |
| }␊ |
| }␊ |
| ␊ |
| $stanza[] = $stanzaLine;␊ |
|
| ␊ |
| return $this->stdio->exec(␊ |
| array("content_diff"),␊ |
| array("r" => $sources[0], "r" => $targets[0])␊ |
| array("r" => array($sources[0], $targets[0]))␊ |
| );␊ |
| }␊ |
| ␊ |
|
| */␊ |
| public function getChangeLog($commit=null, $n=10)␊ |
| {␊ |
| throw new Pluf_Exception_NotImplemented();␊ |
| $horizont = $this->_resolveSelector($commit);␊ |
| $initialBranches = array();␊ |
| $logs = array();␊ |
| ␊ |
| while (!empty($horizont) && $n > 0)␊ |
| {␊ |
| if (count($horizont) > 1)␊ |
| {␊ |
| $out = $this->stdio->exec(array("toposort") + $horizont);␊ |
| $horizont = preg_split("/\n/", $out, -1, PREG_SPLIT_NO_EMPTY);␊ |
| }␊ |
| ␊ |
| $rev = array_shift($horizont);␊ |
| $certs = $this->_getCerts($rev);␊ |
| ␊ |
| // read in the initial branches we should follow␊ |
| if (count($initialBranches) == 0)␊ |
| {␊ |
| $initialBranches = $certs['branch'];␊ |
| }␊ |
| ␊ |
| // only add it to our log if it is on one of the initial branches␊ |
| if (count(array_intersect($initialBranches, $certs['branch'])) > 0)␊ |
| {␊ |
| --$n;␊ |
| ␊ |
| $log = array();␊ |
| $log['author'] = implode(", ", $certs['author']);␊ |
| ␊ |
| $dates = array();␊ |
| foreach ($certs['date'] as $date)␊ |
| $dates[] = gmdate('Y-m-d H:i:s', strtotime($date));␊ |
| $log['date'] = implode(', ', $dates);␊ |
| ␊ |
| $combinedChangelog = implode("\n---\n", $certs['changelog']);␊ |
| $split = preg_split("/[\n\r]/", $combinedChangelog, 2);␊ |
| $log['title'] = $split[0];␊ |
| $log['full_message'] = (isset($split[1])) ? trim($split[1]) : '';␊ |
| ␊ |
| $log['commit'] = $rev;␊ |
| ␊ |
| $logs[] = (object)$log;␊ |
| }␊ |
| ␊ |
| $out = $this->stdio->exec(array("parents", $rev));␊ |
| $horizont += preg_split("/\n/", $out, -1, PREG_SPLIT_NO_EMPTY);␊ |
| }␊ |
| ␊ |
| return $logs;␊ |
| }␊ |
| }␊ |