1
0
Fork 0

Merge branch 'svn-root-detection'

* svn-root-detection:
  Reformat code to follow coding style
  * added svn handling for tags, trunk, branches in root packages
pull/2681/head
Nils Adermann 2014-02-06 23:07:47 +01:00
commit b7a9ea4187
1 changed files with 31 additions and 1 deletions

View File

@ -179,7 +179,12 @@ class RootPackageLoader extends ArrayLoader
return $version;
}
return $this->guessHgVersion($config);
$version = $this->guessHgVersion($config);
if (null !== $version) {
return $version;
}
return $this->guessSvnVersion($config);
}
}
@ -295,4 +300,29 @@ class RootPackageLoader extends ArrayLoader
return $version;
}
private function guessSvnVersion(array $config)
{
// try to fetch current version from svn
if (0 === $this->process->execute('svn info --xml', $output)) {
$trunkPath = isset($config['trunk-path']) ? preg_quote($config['trunk-path'], '#') : 'trunk';
$branchesPath = isset($config['branches-path']) ? preg_quote($config['branches-path'], '#') : 'branches';
$tagsPath = isset($config['tags-path']) ? preg_quote($config['tags-path'], '#') : 'tags';
$urlPattern = '#<url>.*/('.$trunkPath.'|('.$branchesPath.'|'. $tagsPath .')/(.*))</url>#';
if (preg_match($urlPattern, $output, $matches)) {
if (isset($matches[2]) && $branchesPath === $matches[2]) {
// we are in a branches path
$version = $this->versionParser->normalizeBranch($matches[3]);
if ('9999999-dev' === $version) {
$version = 'dev-'.$matches[3];
}
return $version;
}
return $this->versionParser->normalize(trim($matches[1]));
}
}
}
}