| if (isset($this->cache['branches'])) {␊ | 
| return $this->cache['branches'];␊ | 
| }␊ | 
| $res = array();␊ | 
| $cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --username=%s --password=%s %s@HEAD',␊ | 
| escapeshellarg($this->username),␊ | 
| escapeshellarg($this->password),␊ | 
|  | 
| /**␊ | 
| * Get latest changes.␊ | 
| *␊ | 
| * @param string Commit ('HEAD').␊ | 
| * @param string Revision or ('HEAD').␊ | 
| * @param int Number of changes (10).␊ | 
| *␊ | 
| * @return array Changes.␊ | 
| */␊ | 
| public function getChangeLog($rev='HEAD', $n=10)␊ | 
| {␊ | 
| if ($rev != 'HEAD' and !preg_match('/^\d+$/', $rev)) {␊ | 
| // we accept only revisions or HEAD␊ | 
| $rev = 'HEAD';␊ | 
| }␊ | 
| $res = array();␊ | 
| $cmd = sprintf(Pluf::f('svn_path', 'svn').' log --xml -v --limit %s --username=%s --password=%s %s@%s',␊ | 
| escapeshellarg($n),␊ | 
|  | 
| escapeshellarg($rev));␊ | 
| $xmlRes = shell_exec($cmd);␊ | 
| $xml = simplexml_load_string($xmlRes);␊ | 
| ␊ | 
| $res = array();␊ | 
| foreach ($xml->logentry as $entry) {␊ | 
| $log = array();␊ | 
| $log['author'] = (string) $entry->author;␊ | 
|  | 
| ␊ | 
| $res[] = (object) $log;␊ | 
| }␊ | 
| ␊ | 
| return $res;␊ | 
| }␊ | 
| ␊ |