| }␊ | 
| ␊ | 
| /**␊ | 
| * Subversion branches are repository based. ␊ | 
| * Subversion branches are folder based. ␊ | 
| *␊ | 
| * One need to list the folder to know them.␊ | 
| */␊ | 
|  | 
| return $res;␊ | 
| }␊ | 
| ␊ | 
| /**␊ | 
| * Subversion tags are folder based. ␊ | 
| *␊ | 
| * One need to list the folder to know them.␊ | 
| */␊ | 
| public function getTags()␊ | 
| {␊ | 
| if (isset($this->cache['tags'])) {␊ | 
| return $this->cache['tags'];␊ | 
| }␊ | 
| $res = array();␊ | 
| $cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --username=%s --password=%s %s@HEAD',␊ | 
| escapeshellarg($this->username),␊ | 
| escapeshellarg($this->password),␊ | 
| escapeshellarg($this->repo.'/tags'));␊ | 
| $cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;␊ | 
| exec($cmd, $out, $ret);␊ | 
| if ($ret == 0) {␊ | 
| foreach ($out as $entry) {␊ | 
| if (substr(trim($entry), -1) == '/') {␊ | 
| $tag = substr(trim($entry), 0, -1);␊ | 
| $res[$tag] = 'tags/'.$tag;␊ | 
| }␊ | 
| }␊ | 
| }␊ | 
| ksort($res);␊ | 
| $this->cache['tags'] = $res;␊ | 
| return $res;␊ | 
| }␊ | 
| ␊ | 
| public function getMainBranch()␊ | 
| {␊ | 
| return 'HEAD';␊ | 
|  | 
| return array();␊ | 
| }␊ | 
| ␊ | 
| public function inTags($commit, $path)␊ | 
| {␊ | 
| foreach ($this->getTags() as $tag => $tpath) {␊ | 
| if ($tpath and 0 === strpos($path, $tpath)) {␊ | 
| return array($tag);␊ | 
| }␊ | 
| }␊ | 
| return array();␊ | 
| }␊ | 
| ␊ | 
| ␊ | 
| /**␊ | 
| * Get commit details.␊ |