1
0
Fork 0

* added svn handling for tags, trunk, branches in root packages

pull/2602/head
René Kerner 2014-01-16 10:44:35 +01:00
parent 7adc41d02c
commit 410181ee29
1 changed files with 49 additions and 1 deletions

View File

@ -179,8 +179,15 @@ class RootPackageLoader extends ArrayLoader
return $version;
}
return $this->guessHgVersion($config);
$version = $this->guessHgVersion($config);
if (null !== $version) {
return $version;
}
return $this->guessSvnVersion($config);
}
return null;
}
private function guessGitVersion(array $config)
@ -295,4 +302,45 @@ 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)) {
$regexDelimiter = '#';
$trunkPath =
isset($config['trunk-path'])
? preg_quote($config['trunk-path'], $regexDelimiter)
: 'trunk';
$branchesPath =
isset($config['branches-path'])
? preg_quote($config['branches-path'], $regexDelimiter)
: 'branches';
$tagsPath =
isset($config['tags-path'])
? preg_quote($config['tags-path'], $regexDelimiter)
: 'tags';
$urlPattern = $regexDelimiter
. '<url>.*/(' . $trunkPath . '|(' . $branchesPath . '|' . $tagsPath .')/(.*))</url>'
. $regexDelimiter;
if(preg_match($urlPattern, $output, $matches)) {
if(isset($matches[2]) && isset($matches[3]) && $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]));
}
}
}
}