From 2ae084361667ec1b11f70c08826437ed223259e8 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Tue, 27 May 2014 14:19:37 +0200 Subject: [PATCH] Skip updates to same reference-locked version, fixes #2487, fixes #1333 --- src/Composer/Installer.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index 86716e3d3..29a89a4ba 100644 --- a/src/Composer/Installer.php +++ b/src/Composer/Installer.php @@ -495,11 +495,6 @@ class Installer } } - $event = 'Composer\Script\ScriptEvents::PRE_PACKAGE_'.strtoupper($operation->getJobType()); - if (defined($event) && $this->runScripts) { - $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $operation); - } - // not installing from lock, force dev packages' references if they're in root package refs if (!$installFromLock) { $package = null; @@ -515,6 +510,23 @@ class Installer $package->setDistReference($references[$package->getName()]); } } + if ('update' === $operation->getJobType() + && $operation->getTargetPackage()->isDev() + && $operation->getTargetPackage()->getVersion() === $operation->getInitialPackage()->getVersion() + && $operation->getTargetPackage()->getSourceReference() === $operation->getInitialPackage()->getSourceReference() + ) { + if ($this->io->isDebug()) { + $this->io->write(' - Skipping update of '. $operation->getTargetPackage()->getPrettyName().' to the same reference-locked version'); + $this->io->write(''); + } + + continue; + } + } + + $event = 'Composer\Script\ScriptEvents::PRE_PACKAGE_'.strtoupper($operation->getJobType()); + if (defined($event) && $this->runScripts) { + $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $operation); } // output non-alias ops in dry run, output alias ops in debug verbosity