Skip to content

Commit 58b990c

Browse files
committed
Implement preliminary pruning of old metadata revisions
1 parent a101f32 commit 58b990c

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

src/Package/PackageMetadataResolver.php

Lines changed: 12 additions & 0 deletions
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_revisions.tagged_versions')]
41+
private bool $retainRevisionsTagged,
42+
#[Autowire(param: 'dirigent.metadata.retain_revisions.dev_versions')]
43+
private bool $retainRevisionsDev,
3944
) {
4045
}
4146

@@ -217,8 +222,15 @@ private function updateVersion(Version $version, CompletePackageInterface $data,
217222
$metadata = $this->createMetadata($version, $data, $driver);
218223

219224
if (!$version->hasCurrentMetadata() || $this->hasMetadataChanged($version->getCurrentMetadata(), $metadata)) {
225+
$existingMetadata = $version->getCurrentMetadata();
226+
220227
$version->setCurrentMetadata($metadata);
221228

229+
$pruneMetadata = $version->isDevelopment() ? !$this->retainRevisionsDev : !$this->retainRevisionsTagged;
230+
if ($pruneMetadata) {
231+
$this->entityManager->remove($existingMetadata);
232+
}
233+
222234
$this->entityManager->persist($metadata);
223235
}
224236

0 commit comments

Comments
 (0)