Skip to content

Commit 7a9096b

Browse files
committed
Implement preliminary pruning of stale metadata revisions
1 parent da1f97b commit 7a9096b

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

src/Package/PackageMetadataResolver.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
use Composer\Pcre\Preg;
2424
use Composer\Repository\Vcs\VcsDriverInterface;
2525
use Doctrine\ORM\EntityManagerInterface;
26+
use Symfony\Component\DependencyInjection\Attribute\Autowire;
2627
use Symfony\Component\Messenger\MessageBusInterface;
2728
use Symfony\Component\Messenger\Stamp\DispatchAfterCurrentBusStamp;
2829
use Symfony\Component\Messenger\Stamp\TransportNamesStamp;
@@ -36,6 +37,10 @@ public function __construct(
3637
private KeywordRepository $keywordRepository,
3738
private RegistryRepository $registryRepository,
3839
private PackageRepository $packageRepository,
40+
#[Autowire(param: 'dirigent.metadata.retain_stale_revisions.tagged_versions')]
41+
private bool $retainStaleRevisionsTagged,
42+
#[Autowire(param: 'dirigent.metadata.retain_stale_revisions.dev_versions')]
43+
private bool $retainStaleRevisionsDev,
3944
) {
4045
}
4146

@@ -214,12 +219,18 @@ private function updatePackage(Package $package, array $composerPackages, ?VcsDr
214219

215220
private function updateVersion(Version $version, CompletePackageInterface $data, ?VcsDriverInterface $driver = null): void
216221
{
222+
$currentMetadata = $version->hasCurrentMetadata() ? $version->getCurrentMetadata() : null;
217223
$metadata = $this->createMetadata($version, $data, $driver);
218224

219-
if (!$version->hasCurrentMetadata() || $this->hasMetadataChanged($version->getCurrentMetadata(), $metadata)) {
225+
if (null === $currentMetadata || $this->hasMetadataChanged($currentMetadata, $metadata)) {
220226
$version->setCurrentMetadata($metadata);
221227

222228
$this->entityManager->persist($metadata);
229+
230+
$removePreviousMetadata = $version->isDevelopment() ? !$this->retainStaleRevisionsDev : !$this->retainStaleRevisionsTagged;
231+
if (null !== $currentMetadata && $removePreviousMetadata) {
232+
$this->entityManager->remove($currentMetadata);
233+
}
223234
}
224235

225236
$version->setDefaultBranch($data->isDefaultBranch());

0 commit comments

Comments
 (0)