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
|
// creating requirements request
|
||||||
|
$installFromLock = false;
|
||||||
$request = new Request($pool);
|
$request = new Request($pool);
|
||||||
if ($update) {
|
if ($update) {
|
||||||
$io->write('<info>Updating dependencies</info>');
|
$io->write('<info>Updating dependencies</info>');
|
||||||
|
@ -130,6 +131,7 @@ EOT
|
||||||
$request->install($link->getTarget(), $link->getConstraint());
|
$request->install($link->getTarget(), $link->getConstraint());
|
||||||
}
|
}
|
||||||
} elseif ($composer->getLocker()->isLocked()) {
|
} elseif ($composer->getLocker()->isLocked()) {
|
||||||
|
$installFromLock = true;
|
||||||
$io->write('<info>Installing from lock file</info>');
|
$io->write('<info>Installing from lock file</info>');
|
||||||
|
|
||||||
if (!$composer->getLocker()->isFresh()) {
|
if (!$composer->getLocker()->isFresh()) {
|
||||||
|
@ -196,7 +198,25 @@ EOT
|
||||||
}
|
}
|
||||||
if (!$dryRun) {
|
if (!$dryRun) {
|
||||||
$eventDispatcher->dispatchPackageEvent(constant('Composer\Script\ScriptEvents::PRE_PACKAGE_'.strtoupper($operation->getJobType())), $operation);
|
$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);
|
$installationManager->execute($operation);
|
||||||
|
|
||||||
$eventDispatcher->dispatchPackageEvent(constant('Composer\Script\ScriptEvents::POST_PACKAGE_'.strtoupper($operation->getJobType())), $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);
|
$spec = array('package' => $name, 'version' => $version);
|
||||||
|
|
||||||
if ($package->isDev()) {
|
if ($package->isDev()) {
|
||||||
$spec['reference'] = $package->getSourceReference();
|
$spec['source_reference'] = $package->getSourceReference();
|
||||||
}
|
}
|
||||||
|
|
||||||
$lock['packages'][] = $spec;
|
$lock['packages'][] = $spec;
|
||||||
|
|
Loading…
Reference in New Issue