فهرست منبع

Allow setting default transport strategy for path repositories

This change allows setting COMPOSER_MIRROR_PATH_REPOS to 1
in the environment to set the default strategy to 'mirror'.

This allows using 'mirror' during deployments while still symlinking
on a development machine. The default is still overwritten by the
options on the repository configuration.
Rens Admiraal 9 سال پیش
والد
کامیت
a294af3f16
2فایلهای تغییر یافته به همراه11 افزوده شده و 0 حذف شده
  1. 6 0
      doc/03-cli.md
  2. 5 0
      src/Composer/Downloader/PathDownloader.php

+ 6 - 0
doc/03-cli.md

@@ -868,4 +868,10 @@ If set to 1, this env disables the warning about running commands as root/super
 It also disables automatic clearing of sudo sessions, so you should really only set this
 It also disables automatic clearing of sudo sessions, so you should really only set this
 if you use Composer as super user at all times like in docker containers.
 if you use Composer as super user at all times like in docker containers.
 
 
+### COMPOSER_MIRROR_PATH_REPOS
+
+If set to 1, this env changes the default path repository strategy to `mirror` instead
+of `symlink`. As it is the default strategy being set it can still be overwritten by
+repository options.
+
 ← [Libraries](02-libraries.md)  |  [Schema](04-schema.md) →
 ← [Libraries](02-libraries.md)  |  [Schema](04-schema.md) →

+ 5 - 0
src/Composer/Downloader/PathDownloader.php

@@ -59,6 +59,11 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
         $currentStrategy = self::STRATEGY_SYMLINK;
         $currentStrategy = self::STRATEGY_SYMLINK;
         $allowedStrategies = array(self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR);
         $allowedStrategies = array(self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR);
 
 
+        $mirrorPathRepos = getenv('COMPOSER_MIRROR_PATH_REPOS');
+        if (true === (bool)$mirrorPathRepos) {
+            $currentStrategy = self::STRATEGY_MIRROR;
+        }
+
         if (true === $transportOptions['symlink']) {
         if (true === $transportOptions['symlink']) {
             $currentStrategy = self::STRATEGY_SYMLINK;
             $currentStrategy = self::STRATEGY_SYMLINK;
             $allowedStrategies = array(self::STRATEGY_SYMLINK);
             $allowedStrategies = array(self::STRATEGY_SYMLINK);