Эх сурвалжийг харах

Fix require command picking of specific versions, fixes #6859

Jordi Boggiano 7 жил өмнө
parent
commit
3976d9f242

+ 6 - 5
src/Composer/Command/InitCommand.php

@@ -376,7 +376,7 @@ EOT
                     ));
                 } else {
                     // check that the specified version/constraint exists before we proceed
-                    $this->findBestVersionForPackage($input, $requirement['name'], $phpVersion, 'dev', $requirement['version']);
+                    $this->findBestVersionForPackage($input, $requirement['name'], $phpVersion, $preferredStability, $requirement['version'], 'dev');
                 }
 
                 $result[] = $requirement['name'] . ' ' . $requirement['version'];
@@ -596,10 +596,10 @@ EOT
         return false !== filter_var($email, FILTER_VALIDATE_EMAIL);
     }
 
-    private function getPool(InputInterface $input)
+    private function getPool(InputInterface $input, $minimumStability = null)
     {
         if (!$this->pool) {
-            $this->pool = new Pool($this->getMinimumStability($input));
+            $this->pool = new Pool($minimumStability ?: $this->getMinimumStability($input));
             $this->pool->addRepository($this->getRepos());
         }
 
@@ -631,13 +631,14 @@ EOT
      * @param  string                    $name
      * @param  string                    $phpVersion
      * @param  string                    $preferredStability
+     * @param  string                    $minimumStability
      * @throws \InvalidArgumentException
      * @return string
      */
-    private function findBestVersionForPackage(InputInterface $input, $name, $phpVersion, $preferredStability = 'stable', $requiredVersion = null)
+    private function findBestVersionForPackage(InputInterface $input, $name, $phpVersion, $preferredStability = 'stable', $requiredVersion = null, $minimumStability = null)
     {
         // find the latest version allowed in this pool
-        $versionSelector = new VersionSelector($this->getPool($input));
+        $versionSelector = new VersionSelector($this->getPool($input, $minimumStability));
         $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability);
 
         if (!$package) {