Reedy has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/365520 )

Change subject: Update wikimedia/composer-merge-plugin from 1.4.0 -> 1.4.1
......................................................................

Update wikimedia/composer-merge-plugin from 1.4.0 -> 1.4.1

https://github.com/wikimedia/composer-merge-plugin/releases/tag/v1.4.1
https://github.com/wikimedia/composer-merge-plugin/compare/v1.4.0...v1.4.1

Change-Id: I50338e7f64f8eb3ff9e7177f59d93c88e08562d6
---
M composer.json
M composer.lock
M composer/installed.json
M wikimedia/composer-merge-plugin/README.md
M wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php
M wikimedia/composer-merge-plugin/src/Merge/PluginState.php
6 files changed, 102 insertions(+), 62 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vendor 
refs/changes/20/365520/1

diff --git a/composer.json b/composer.json
index f3f0579..ff6c40d 100644
--- a/composer.json
+++ b/composer.json
@@ -66,7 +66,7 @@
                "wikimedia/base-convert": "1.0.1",
                "wikimedia/cdb": "1.4.1",
                "wikimedia/cldr-plural-rule-parser": "1.0.0",
-               "wikimedia/composer-merge-plugin": "1.4.0",
+               "wikimedia/composer-merge-plugin": "1.4.1",
                "wikimedia/css-sanitizer": "1.0.2",
                "wikimedia/html-formatter": "1.0.1",
                "wikimedia/ip-set": "1.1.0",
diff --git a/composer.lock b/composer.lock
index b0b058d..6f6b3b1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at 
https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file";,
         "This file is @generated automatically"
     ],
-    "content-hash": "cf2b26d4738f76fd8392f2930d619c42",
+    "content-hash": "d55a7d0dc9e1329fdbcb655ea6d663e9",
     "packages": [
         {
             "name": "composer/semver",
@@ -1556,16 +1556,16 @@
         },
         {
             "name": "wikimedia/composer-merge-plugin",
-            "version": "v1.4.0",
+            "version": "v1.4.1",
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/composer-merge-plugin.git";,
-                "reference": "ca453f9f13d8b05f86f20ea10be992a782e6f78c"
+                "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/ca453f9f13d8b05f86f20ea10be992a782e6f78c";,
-                "reference": "ca453f9f13d8b05f86f20ea10be992a782e6f78c",
+                "url": 
"https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/81c6ac72a24a67383419c7eb9aa2b3437f2ab100";,
+                "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100",
                 "shasum": ""
             },
             "require": {
@@ -1601,7 +1601,7 @@
                 }
             ],
             "description": "Composer plugin to merge multiple composer.json 
files",
-            "time": "2017-03-13T16:52:55+00:00"
+            "time": "2017-04-25T02:31:25+00:00"
         },
         {
             "name": "wikimedia/css-sanitizer",
diff --git a/composer/installed.json b/composer/installed.json
index f3d2039..17c7d2f 100644
--- a/composer/installed.json
+++ b/composer/installed.json
@@ -1578,57 +1578,6 @@
         ]
     },
     {
-        "name": "wikimedia/composer-merge-plugin",
-        "version": "v1.4.0",
-        "version_normalized": "1.4.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/wikimedia/composer-merge-plugin.git";,
-            "reference": "ca453f9f13d8b05f86f20ea10be992a782e6f78c"
-        },
-        "dist": {
-            "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/ca453f9f13d8b05f86f20ea10be992a782e6f78c";,
-            "reference": "ca453f9f13d8b05f86f20ea10be992a782e6f78c",
-            "shasum": ""
-        },
-        "require": {
-            "composer-plugin-api": "^1.0",
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "composer/composer": "~1.0.0",
-            "jakub-onderka/php-parallel-lint": "~0.8",
-            "phpunit/phpunit": "~4.8|~5.0",
-            "squizlabs/php_codesniffer": "~2.1.0"
-        },
-        "time": "2017-03-13T16:52:55+00:00",
-        "type": "composer-plugin",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.3.x-dev"
-            },
-            "class": "Wikimedia\\Composer\\MergePlugin"
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Wikimedia\\Composer\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/";,
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Bryan Davis",
-                "email": "bd...@wikimedia.org"
-            }
-        ],
-        "description": "Composer plugin to merge multiple composer.json files"
-    },
-    {
         "name": "cssjanus/cssjanus",
         "version": "v1.2.0",
         "version_normalized": "1.2.0.0",
@@ -2404,5 +2353,56 @@
         ],
         "description": "Provides library of common widgets, layouts, and 
windows.",
         "homepage": "https://www.mediawiki.org/wiki/OOjs_UI";
+    },
+    {
+        "name": "wikimedia/composer-merge-plugin",
+        "version": "v1.4.1",
+        "version_normalized": "1.4.1.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/wikimedia/composer-merge-plugin.git";,
+            "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100"
+        },
+        "dist": {
+            "type": "zip",
+            "url": 
"https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/81c6ac72a24a67383419c7eb9aa2b3437f2ab100";,
+            "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100",
+            "shasum": ""
+        },
+        "require": {
+            "composer-plugin-api": "^1.0",
+            "php": ">=5.3.2"
+        },
+        "require-dev": {
+            "composer/composer": "~1.0.0",
+            "jakub-onderka/php-parallel-lint": "~0.8",
+            "phpunit/phpunit": "~4.8|~5.0",
+            "squizlabs/php_codesniffer": "~2.1.0"
+        },
+        "time": "2017-04-25T02:31:25+00:00",
+        "type": "composer-plugin",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.3.x-dev"
+            },
+            "class": "Wikimedia\\Composer\\MergePlugin"
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "Wikimedia\\Composer\\": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/";,
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Bryan Davis",
+                "email": "bd...@wikimedia.org"
+            }
+        ],
+        "description": "Composer plugin to merge multiple composer.json files"
     }
 ]
diff --git a/wikimedia/composer-merge-plugin/README.md 
b/wikimedia/composer-merge-plugin/README.md
index 8afed01..e63b847 100644
--- a/wikimedia/composer-merge-plugin/README.md
+++ b/wikimedia/composer-merge-plugin/README.md
@@ -24,7 +24,8 @@
 Installation
 ------------
 
-Composer Merge Plugin requires [Composer 1.0.0](https://getcomposer.org/) or 
newer.
+Composer Merge Plugin requires [Composer 1.0.0](https://getcomposer.org/) or
+newer.
 
 ```
 $ composer require wikimedia/composer-merge-plugin
@@ -50,6 +51,7 @@
             ],
             "recurse": true,
             "replace": false,
+            "ignore-duplicates": false,
             "merge-dev": true,
             "merge-extra": false,
             "merge-extra-deep": false,
@@ -118,6 +120,19 @@
 made by earlier files. Files are loaded in the order specified by the
 `include` setting with globbed files being processed in alphabetical order.
 
+### ignore-duplicates
+
+By default, Composer's conflict resolution engine is used to determine which
+version of a package should be installed when multiple files specify the same
+package. An `"ignore-duplicates": true` setting can be provided to change to
+a "first version specified wins" conflict resolution strategy. In this mode,
+duplicate package declarations found in merged files will be ignored in favor
+of the declarations made by earlier files. Files are loaded in the order
+specified by the `include` setting with globbed files being processed in
+alphabetical order.
+
+Note: `"replace": true` and `"ignore-duplicates": true` modes are mutually
+exclusive. If both are set, `"ignore-duplicates": true` will be used.
 
 ### merge-dev
 
@@ -190,8 +205,8 @@
 License
 -------
 
-Composer Merge plugin is licensed under the MIT license. See the 
[`LICENSE`](LICENSE)
-file for more details.
+Composer Merge plugin is licensed under the MIT license. See the
+[`LICENSE`](LICENSE) file for more details.
 
 
 ---
diff --git a/wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php 
b/wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php
index c90b4b7..85997ae 100644
--- a/wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php
+++ b/wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php
@@ -275,9 +275,17 @@
         array $merge,
         $state
     ) {
+        if ($state->ignoreDuplicateLinks() && $state->replaceDuplicateLinks()) 
{
+            $this->logger->warning("Both replace and ignore-duplicates are 
true. These are mutually exclusive.");
+            $this->logger->warning("Duplicate packages will be ignored.");
+        }
+
         $dups = array();
         foreach ($merge as $name => $link) {
-            if (!isset($origin[$name]) || $state->replaceDuplicateLinks()) {
+            if (isset($origin[$name]) && $state->ignoreDuplicateLinks()) {
+                $this->logger->info("Ignoring duplicate 
<comment>{$name}</comment>");
+                continue;
+            } elseif (!isset($origin[$name]) || 
$state->replaceDuplicateLinks()) {
                 $this->logger->info("Merging <comment>{$name}</comment>");
                 $origin[$name] = $link;
             } else {
diff --git a/wikimedia/composer-merge-plugin/src/Merge/PluginState.php 
b/wikimedia/composer-merge-plugin/src/Merge/PluginState.php
index 670c328..7aa90ac 100644
--- a/wikimedia/composer-merge-plugin/src/Merge/PluginState.php
+++ b/wikimedia/composer-merge-plugin/src/Merge/PluginState.php
@@ -55,6 +55,11 @@
     protected $replace = false;
 
     /**
+     * @var bool $ignore
+     */
+    protected $ignore = false;
+
+    /**
      * Whether to merge the -dev sections.
      * @var bool $mergeDev
      */
@@ -139,6 +144,7 @@
                 'require' => array(),
                 'recurse' => true,
                 'replace' => false,
+                'ignore-duplicates' => false,
                 'merge-dev' => true,
                 'merge-extra' => false,
                 'merge-extra-deep' => false,
@@ -153,6 +159,7 @@
             $config['require'] : array($config['require']);
         $this->recurse = (bool)$config['recurse'];
         $this->replace = (bool)$config['replace'];
+        $this->ignore = (bool)$config['ignore-duplicates'];
         $this->mergeDev = (bool)$config['merge-dev'];
         $this->mergeExtra = (bool)$config['merge-extra'];
         $this->mergeExtraDeep = (bool)$config['merge-extra-deep'];
@@ -347,6 +354,16 @@
     }
 
     /**
+     * Should duplicate links be ignored?
+     *
+     * @return bool
+     */
+    public function ignoreDuplicateLinks()
+    {
+        return $this->ignore;
+    }
+
+    /**
      * Should the extra section be merged?
      *
      * By default, the extra section is not merged and there will be many

-- 
To view, visit https://gerrit.wikimedia.org/r/365520
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I50338e7f64f8eb3ff9e7177f59d93c88e08562d6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vendor
Gerrit-Branch: master
Gerrit-Owner: Reedy <re...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to