1
0
Fork 0

Force installs from lock to reinstall dev packages from the exact locked reference

pull/329/head
Jordi Boggiano 2012-02-19 00:13:51 +01:00
parent c1baa20fec
commit 496188f714
2 changed files with 21 additions and 1 deletions

View File

@ -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);
}
}

View File

@ -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;