Browse Source

Fix root aliasing and allow aliasing using the branch-alias as source

Jordi Boggiano 12 năm trước cách đây
mục cha
commit
ded485dd60
1 tập tin đã thay đổi với 11 bổ sung4 xóa
  1. 11 4
      src/Composer/DependencyResolver/Pool.php

+ 11 - 4
src/Composer/DependencyResolver/Pool.php

@@ -101,16 +101,23 @@ class Pool
                             }
                         }
 
-                        foreach (array_keys($names) as $name) {
-                            $this->packageByName[$name][] =& $this->packages[$id-2];
+                        foreach (array_keys($names) as $provided) {
+                            $this->packageByName[$provided][] =& $this->packages[$id-2];
                         }
 
                         // handle root package aliases
+                        unset($rootAliasData);
                         if (isset($rootAliases[$name][$version])) {
+                            $rootAliasData = $rootAliases[$name][$version];
+                        } elseif (isset($package['alias_normalized']) && isset($rootAliases[$name][$package['alias_normalized']])) {
+                            $rootAliasData = $rootAliases[$name][$package['alias_normalized']];
+                        }
+
+                        if (isset($rootAliasData)) {
                             $alias = $package;
                             unset($alias['raw']);
-                            $alias['version'] = $rootAliases[$name][$version]['alias_normalized'];
-                            $alias['alias'] = $rootAliases[$name][$version]['alias'];
+                            $alias['version'] = $rootAliasData['alias_normalized'];
+                            $alias['alias'] = $rootAliasData['alias'];
                             $alias['alias_of'] = $package['id'];
                             $alias['id'] = $id++;
                             $alias['root_alias'] = true;