|
@@ -111,11 +111,20 @@ class Updater
|
|
if ($bVersion === '9999999-dev' || 'dev-' === substr($bVersion, 0, 4)) {
|
|
if ($bVersion === '9999999-dev' || 'dev-' === substr($bVersion, 0, 4)) {
|
|
$bVersion = 'dev';
|
|
$bVersion = 'dev';
|
|
}
|
|
}
|
|
|
|
+ $aIsDev = $aVersion === 'dev' || substr($aVersion, -4) === '-dev';
|
|
|
|
+ $bIsDev = $bVersion === 'dev' || substr($bVersion, -4) === '-dev';
|
|
|
|
|
|
|
|
+ // push dev versions to the end
|
|
|
|
+ if ($aIsDev !== $bIsDev) {
|
|
|
|
+ return $aIsDev ? 1 : -1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // equal versions are sorted by date
|
|
if ($aVersion === $bVersion) {
|
|
if ($aVersion === $bVersion) {
|
|
return $a->getReleaseDate() > $b->getReleaseDate() ? 1 : -1;
|
|
return $a->getReleaseDate() > $b->getReleaseDate() ? 1 : -1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // the rest is sorted by version
|
|
return version_compare($a->getVersion(), $b->getVersion());
|
|
return version_compare($a->getVersion(), $b->getVersion());
|
|
});
|
|
});
|
|
|
|
|
|
@@ -130,6 +139,7 @@ class Updater
|
|
$em->refresh($package);
|
|
$em->refresh($package);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ $lastUpdated = true;
|
|
foreach ($versions as $version) {
|
|
foreach ($versions as $version) {
|
|
if ($version instanceof AliasPackage) {
|
|
if ($version instanceof AliasPackage) {
|
|
continue;
|
|
continue;
|
|
@@ -139,7 +149,13 @@ class Updater
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- $this->updateInformation($package, $version, $flags);
|
|
|
|
|
|
+ $lastUpdated = $this->updateInformation($package, $version, $flags);
|
|
|
|
+ if ($lastUpdated) {
|
|
|
|
+ $em->flush();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!$lastUpdated) {
|
|
$em->flush();
|
|
$em->flush();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -162,20 +178,17 @@ class Updater
|
|
|
|
|
|
$normVersion = $data->getVersion();
|
|
$normVersion = $data->getVersion();
|
|
|
|
|
|
- // check if we have that version yet
|
|
|
|
- foreach ($package->getVersions() as $existingVersion) {
|
|
|
|
- if (strtolower($existingVersion->getNormalizedVersion()) === strtolower($normVersion)) {
|
|
|
|
- $source = $existingVersion->getSource();
|
|
|
|
- // update if the right flag is set, or it's a dev version, or the source reference has changed in a tagged release (re-tag)
|
|
|
|
- if ($existingVersion->getDevelopment() || $source['reference'] !== $data->getSourceReference() || ($flags & self::UPDATE_EQUAL_REFS)) {
|
|
|
|
- $version = $existingVersion;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ $existingVersion = $package->getVersion($normVersion);
|
|
|
|
+ if ($existingVersion) {
|
|
|
|
+ $source = $existingVersion->getSource();
|
|
|
|
+ // update if the right flag is set, or it's a dev version, or the source reference has changed in a tagged release (re-tag)
|
|
|
|
+ if ($existingVersion->getDevelopment() || $source['reference'] !== $data->getSourceReference() || ($flags & self::UPDATE_EQUAL_REFS)) {
|
|
|
|
+ $version = $existingVersion;
|
|
|
|
+ } else {
|
|
// mark it updated to avoid it being pruned
|
|
// mark it updated to avoid it being pruned
|
|
$existingVersion->setUpdatedAt(new \DateTime);
|
|
$existingVersion->setUpdatedAt(new \DateTime);
|
|
|
|
|
|
- return;
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -361,5 +374,7 @@ class Updater
|
|
if (!$package->getVersions()->contains($version)) {
|
|
if (!$package->getVersions()->contains($version)) {
|
|
$package->addVersions($version);
|
|
$package->addVersions($version);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
}
|
|
}
|