make sure "svn info" output is parsed in a x-platform way
parent
9bc83d698e
commit
e67a559db9
|
@ -173,14 +173,21 @@ class SvnDownloader extends VcsDownloader
|
|||
{
|
||||
if (preg_match('{.*@(\d+)$}', $fromReference) && preg_match('{.*@(\d+)$}', $toReference)) {
|
||||
// retrieve the svn base url from the checkout folder
|
||||
$command = sprintf('svn info %s | grep ^URL:', ProcessExecutor::escape($path));
|
||||
$command = sprintf('svn info --non-interactive --xml %s', ProcessExecutor::escape($path));
|
||||
if (0 !== $this->process->execute($command, $output, $path)) {
|
||||
throw new \RuntimeException(
|
||||
'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()
|
||||
);
|
||||
}
|
||||
// parse info line like 'URL: https://example.com/my/svn/url'
|
||||
list ($prefix, $baseUrl) = explode(" ", $output, 2);
|
||||
|
||||
$urlPattern = '#<url>(.*)</url>#';
|
||||
if (preg_match($urlPattern, $output, $matches)) {
|
||||
$baseUrl = $matches[1];
|
||||
} else {
|
||||
throw new \RuntimeException(
|
||||
'Unable to determine svn url for path '. $path
|
||||
);
|
||||
}
|
||||
|
||||
// strip paths from references and only keep the actual revision
|
||||
$fromRevision = preg_replace('{.*@(\d+)$}', '$1', $fromReference);
|
||||
|
|
Loading…
Reference in New Issue