1
0
Fork 0

Improve 'getTags()' and 'getBranches()'

pull/410/head
Flo 2012-03-23 00:29:19 +01:00
parent c7dc49fe10
commit 80bb040468
1 changed files with 26 additions and 16 deletions

View File

@ -198,14 +198,17 @@ class SvnDriver extends VcsDriver
public function getTags()
{
if (null === $this->tags) {
$output = $this->execute('svn ls', $this->baseUrl . '/tags');
$this->tags = array();
$output = $this->execute('svn ls', $this->baseUrl . '/tags');
if ($output) {
foreach ($this->process->splitLines($output) as $tag) {
if ($tag) {
$this->tags[rtrim($tag, '/')] = '/tags/'.$tag;
}
}
}
}
return $this->tags;
}
@ -216,27 +219,34 @@ class SvnDriver extends VcsDriver
public function getBranches()
{
if (null === $this->branches) {
$output = $this->execute('svn ls --verbose', $this->baseUrl . '/');
$this->branches = array();
$output = $this->execute('svn ls --verbose', $this->baseUrl . '/');
if ($output) {
foreach ($this->process->splitLines($output) as $line) {
preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match);
if ($match[2] === 'trunk/') {
$line = trim($line);
if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) {
if (isset($match[1]) && isset($match[2]) && $match[2] === 'trunk/') {
$this->branches['trunk'] = '/trunk/@'.$match[1];
break;
}
}
}
}
unset($output);
$output = $this->execute('svn ls --verbose', $this->baseUrl . '/branches');
if ($output) {
foreach ($this->process->splitLines(trim($output)) as $line) {
preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match);
if ($match[2] === './') {
continue;
}
$line = trim($line);
if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) {
if (isset($match[1]) && isset($match[2]) && $match[2] !== './') {
$this->branches[rtrim($match[2], '/')] = '/branches/'.$match[2].'@'.$match[1];
}
}
}
}
}
return $this->branches;
}