Quellcode durchsuchen

"Writing lock file" message is only displayed if locker isn't fresh

Tiago Ribeiro vor 13 Jahren
Ursprung
Commit
13839bf52c
2 geänderte Dateien mit 15 neuen und 5 gelöschten Zeilen
  1. 3 2
      src/Composer/Installer.php
  2. 12 3
      src/Composer/Package/Locker.php

+ 3 - 2
src/Composer/Installer.php

@@ -305,8 +305,9 @@ class Installer
 
         if (!$this->dryRun) {
             if ($this->update || !$this->locker->isLocked()) {
-                $this->locker->setLockData($localRepo->getPackages(), $aliases);
-                $this->io->write('<info>Writing lock file</info>');
+                if ($this->locker->setLockData($localRepo->getPackages(), $aliases)) {
+                    $this->io->write('<info>Writing lock file</info>');
+                }
             }
 
             $localRepo->write();

+ 12 - 3
src/Composer/Package/Locker.php

@@ -121,6 +121,8 @@ class Locker
      *
      * @param array $packages array of packages
      * @param array $aliases array of aliases
+     *
+     * @return Boolean
      */
     public function setLockData(array $packages, array $aliases)
     {
@@ -129,6 +131,7 @@ class Locker
             'packages' => array(),
             'aliases' => $aliases,
         );
+
         foreach ($packages as $package) {
             $name    = $package->getPrettyName();
             $version = $package->getPrettyVersion();
@@ -144,19 +147,25 @@ class Locker
             if ($package->isDev()) {
                 $spec['source-reference'] = $package->getSourceReference();
             }
+
             if ($package->getAlias() && $package->isInstalledAsAlias()) {
                 $spec['alias'] = $package->getAlias();
             }
 
             $lock['packages'][] = $spec;
         }
+
         usort($lock['packages'], function ($a, $b) {
             return strcmp($a['package'], $b['package']);
         });
 
-        $this->lockFile->write($lock);
+        if ($lock !== $this->getLockData()) {
+            $this->lockFile->write($lock);
+            $this->lockDataCache = null;
+
+            return true;
+        }
 
-        // invalidate cache
-        $this->lockDataCache = null;
+        return false;
     }
 }