1
0
Fork 0

Pick higher revision number to guarantee successful file retrieval (#11350)

pull/11383/head
AnrDaemon 2023-03-17 12:23:02 +03:00 committed by GitHub
parent 1a3f98601f
commit 3b16937bae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 10 deletions

View File

@ -236,14 +236,19 @@ class SvnDriver extends VcsDriver
if ($this->tagsPath !== false) { if ($this->tagsPath !== false) {
$output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath); $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath);
if ($output) { if ($output) {
$lastRev = null;
foreach ($this->process->splitLines($output) as $line) { foreach ($this->process->splitLines($output) as $line) {
$line = trim($line); $line = trim($line);
if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) {
if (isset($match[1], $match[2]) && $match[2] !== './') { if (isset($match[1], $match[2])) {
$tags[rtrim($match[2], '/')] = $this->buildIdentifier( if ($match[2] === './') {
'/' . $this->tagsPath . '/' . $match[2], $lastRev = $match[1];
$match[1] } else {
); $tags[rtrim($match[2], '/')] = $this->buildIdentifier(
'/' . $this->tagsPath . '/' . $match[2],
max($lastRev, $match[1])
);
}
} }
} }
} }
@ -291,14 +296,19 @@ class SvnDriver extends VcsDriver
if ($this->branchesPath !== false) { if ($this->branchesPath !== false) {
$output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath); $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath);
if ($output) { if ($output) {
$lastRev = null;
foreach ($this->process->splitLines(trim($output)) as $line) { foreach ($this->process->splitLines(trim($output)) as $line) {
$line = trim($line); $line = trim($line);
if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) {
if (isset($match[1], $match[2]) && $match[2] !== './') { if (isset($match[1], $match[2])) {
$branches[rtrim($match[2], '/')] = $this->buildIdentifier( if ($match[2] === './') {
'/' . $this->branchesPath . '/' . $match[2], $lastRev = $match[1];
$match[1] } else {
); $branches[rtrim($match[2], '/')] = $this->buildIdentifier(
'/' . $this->branchesPath . '/' . $match[2],
max($lastRev, $match[1])
);
}
} }
} }
} }