From 298246dccbf0e934fb2722d1e1e9f809ce9428f9 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Mon, 3 May 2021 14:42:23 +0200 Subject: [PATCH] Also condense dev-* versions if there are many, refs #9850 --- src/Composer/DependencyResolver/Problem.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Composer/DependencyResolver/Problem.php b/src/Composer/DependencyResolver/Problem.php index 996cd5005..3f7f8d000 100644 --- a/src/Composer/DependencyResolver/Problem.php +++ b/src/Composer/DependencyResolver/Problem.php @@ -362,7 +362,7 @@ class Problem * @param string[] $versions an array of pretty versions, with normalized versions as keys * @return list a list of pretty versions and '...' where versions were removed */ - private static function condenseVersionList(array $versions, $max) + private static function condenseVersionList(array $versions, $max, $maxDev = 16) { if (count($versions) <= $max) { return $versions; @@ -371,10 +371,16 @@ class Problem $filtered = array(); $byMajor = array(); foreach ($versions as $version => $pretty) { - $byMajor[preg_replace('{^(\d+)\..*}', '$1', $version)][] = $pretty; + if (0 === stripos($version, 'dev-')) { + $byMajor['dev'][] = $pretty; + } else { + $byMajor[preg_replace('{^(\d+)\..*}', '$1', $version)][] = $pretty; + } } - foreach ($byMajor as $versionsForMajor) { - if (count($versionsForMajor) > $max) { + foreach ($byMajor as $majorVersion => $versionsForMajor) { + $maxVersions = $majorVersion === 'dev' ? $maxDev : $max; + if (count($versionsForMajor) > $maxVersions) { + // output only 1st and last versions $filtered[] = $versionsForMajor[0]; $filtered[] = '...'; $filtered[] = $versionsForMajor[count($versionsForMajor) - 1];