Force installs from lock to reinstall dev packages from the exact locked reference
parent
c1baa20fec
commit
496188f714
|
@ -113,6 +113,7 @@ EOT
|
|||
}
|
||||
|
||||
// creating requirements request
|
||||
$installFromLock = false;
|
||||
$request = new Request($pool);
|
||||
if ($update) {
|
||||
$io->write('<info>Updating dependencies</info>');
|
||||
|
@ -130,6 +131,7 @@ EOT
|
|||
$request->install($link->getTarget(), $link->getConstraint());
|
||||
}
|
||||
} elseif ($composer->getLocker()->isLocked()) {
|
||||
$installFromLock = true;
|
||||
$io->write('<info>Installing from lock file</info>');
|
||||
|
||||
if (!$composer->getLocker()->isFresh()) {
|
||||
|
@ -196,7 +198,25 @@ EOT
|
|||
}
|
||||
if (!$dryRun) {
|
||||
$eventDispatcher->dispatchPackageEvent(constant('Composer\Script\ScriptEvents::PRE_PACKAGE_'.strtoupper($operation->getJobType())), $operation);
|
||||
|
||||
// if installing from lock, restore dev packages' references to their locked state
|
||||
if ($installFromLock) {
|
||||
$package = null;
|
||||
if ('update' === $operation->getJobType()) {
|
||||
$package = $operation->getTargetPackage();
|
||||
} elseif ('install' === $operation->getJobType()) {
|
||||
$package = $operation->getPackage();
|
||||
}
|
||||
if ($package && $package->isDev()) {
|
||||
foreach ($composer->getLocker()->getLockedPackages() as $lockedPackage) {
|
||||
if (!empty($lockedPackage['source_reference']) && strtolower($lockedPackage['package']) === $package->getName()) {
|
||||
$package->setSourceReference($lockedPackage['source_reference']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$installationManager->execute($operation);
|
||||
|
||||
$eventDispatcher->dispatchPackageEvent(constant('Composer\Script\ScriptEvents::POST_PACKAGE_'.strtoupper($operation->getJobType())), $operation);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -119,7 +119,7 @@ class Locker
|
|||
$spec = array('package' => $name, 'version' => $version);
|
||||
|
||||
if ($package->isDev()) {
|
||||
$spec['reference'] = $package->getSourceReference();
|
||||
$spec['source_reference'] = $package->getSourceReference();
|
||||
}
|
||||
|
||||
$lock['packages'][] = $spec;
|
||||
|
|
Loading…
Reference in New Issue