Skip to content

Commit 0f02537

Browse files
committed
Fix matching of existing package metadata
Signed-off-by: Tim Goudriaan <tim@codedmonkey.com>
1 parent 98c4d97 commit 0f02537

File tree

2 files changed

+13
-19
lines changed

2 files changed

+13
-19
lines changed

src/Doctrine/Entity/Metadata.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ public function getBrowsableRepositoryUrl(): ?string
596596
return null;
597597
}
598598

599-
public function toComposerArray(): array
599+
public function toComposerArray(bool $includePackageMetadata = true): array
600600
{
601601
// Set default fields
602602
$data = [
@@ -629,6 +629,7 @@ public function toComposerArray(): array
629629
foreach ($linkCollection as $link) {
630630
$data[$linkType][$link->getLinkedPackageName()] = $link->getLinkedVersionConstraint();
631631
}
632+
ksort($data[$linkType]);
632633
}
633634

634635
// Set optional fields
@@ -662,7 +663,10 @@ public function toComposerArray(): array
662663
$data['bin'] = $this->binaries;
663664
}
664665

665-
// Set administrative fields
666+
if (!$includePackageMetadata) {
667+
return $data;
668+
}
669+
666670
if ($this->getVersion()->isDefaultBranch()) {
667671
$data['default-branch'] = true;
668672
}

src/Package/PackageMetadataResolver.php

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ private function updateVersion(Version $version, CompletePackageInterface $data,
253253
{
254254
$metadata = $this->createMetadata($version, $data, $driver);
255255

256-
if ($this->hasMetadataChanged($version->getCurrentMetadata(), $metadata)) {
256+
if ($this->hasMetadataChanged($metadata)) {
257257
$version->setCurrentMetadata($metadata);
258258

259259
$this->entityManager->persist($metadata);
@@ -396,27 +396,17 @@ private function sanitize(?string $string): ?string
396396
return $string;
397397
}
398398

399-
private function hasMetadataChanged(?Metadata $currentMetadata, Metadata $metadata): bool
399+
private function hasMetadataChanged(Metadata $resolvedMetadata): bool
400400
{
401-
$currentData = $currentMetadata?->toComposerArray();
402-
$data = $metadata->toComposerArray();
403-
404-
if (null === $currentData) {
401+
// Check if the package version has existing metadata first
402+
if (null === $currentMetadata = $resolvedMetadata->getVersion()->getCurrentMetadata()) {
405403
return true;
406404
}
407405

408-
// Fields that shouldn't trigger a new revision
409-
$excludeFields = ['abandoned', 'default-branch'];
410-
411-
foreach ($excludeFields as $field) {
412-
unset($currentData[$field], $data[$field]);
413-
}
414-
415-
// Normalize both arrays for comparison
416-
ksort($currentData);
417-
ksort($data);
406+
$currentData = $currentMetadata?->toComposerArray(includePackageMetadata: false);
407+
$resolvedData = $resolvedMetadata->toComposerArray(includePackageMetadata: false);
418408

419-
return $currentData !== $data;
409+
return $currentData !== $resolvedData;
420410
}
421411

422412
private function getReadmeContents(Metadata $metadata, VcsDriverInterface $driver): ?string

0 commit comments

Comments
 (0)