症状:composer require
コマンドの実行中に失敗したスクリプトがあり、次のような出力になります。
$ ./example.sh
Gathering patches for root package.
Removing package drupal/core so that it can be re-installed and re-patched.
- Removing drupal/core (8.6.x-dev)
In VcsDownloader.php line 242:
Source directory docroot/core has uncommitted changes.
問題のあるcomposer require
コマンドを手動で実行しようとすると、次のような出力になります。
$ composer require drupal/examples
Gathering patches for root package.
Removing package drupal/core so that it can be re-installed and re-patched.
- Removing drupal/core (8.6.x-dev)
The package has modified files:
M core.services.yml
M includes/install.core.inc
M includes/install.inc
M lib/Drupal/Core/Config/ConfigInstaller.php
M lib/Drupal/Core/Config/ExtensionInstallStorage.php
M lib/Drupal/Core/Config/InstallStorage.php
M lib/Drupal/Core/Entity/EntityViewBuilder.php
M lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php
M lib/Drupal/Core/Extension/ExtensionDiscovery.php
M lib/Drupal/Core/Extension/ModuleExtensionList.php
19 more files modified, choose "v" to view the full list
Discard changes [y,n,v,d,?]?
条件: Composerを使用してDrupalサイトの依存関係を管理し、cweagans/composer-patches
でパッチを適用しています。 Acquia BLTを使用します。
説明:問題はcweagans/composer-patches
はDrupalコアに複製した後にパッチを適用します。Composerは、影響を受けるファイルを変更したと考え、上書きしないように促します。進行中の作業を意図せずに失うことになります。
ソリューション:構成Composer to discard-changes
これは、「[非インタラクティブモードでダーティアップデートを処理するデフォルトスタイルを設定します... [to]常にベンダーの変更を破棄します」。次に、スクリプトを変更して--no-interaction
(または-n
) 国旗。例えば。:
$ composer config discard-changes true
$ composer require -n drupal/examples
Using version 1.x-dev for drupal/examples
./composer.json has been updated
Gathering patches for root package.
Removing package drupal/core so that it can be re-installed and re-patched.
- Removing drupal/core (8.6.x-dev)
Deleting docroot/core - deleted
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
Gathering patches for root package.
No patches supplied.
Gathering patches for dependencies. This might take a minute.
- Installing drupal/core (8.6.x-dev 8dbf42a): Cloning 8dbf42a90c from cache
- Applying patches for drupal/core
https://www.drupal.org/files/issues/2869592-remove-update-warning-7.patch (2869592 - Disabled update module shouldn't produce a status report warning)
https://www.drupal.org/files/issues/2885441-2.patch (2885441 - EntityReferenceAutocompleteWidget should define its size setting as an integer)
https://www.drupal.org/files/issues/2018-09-24/2815221-109.patch (2815221 - Add quickedit to the latest-revision route)
https://www.drupal.org/files/issues/2018-10-12/1356276-531.patch (1356276 - Allow profiles to define a base/parent profile and load them in the correct order)
https://www.drupal.org/files/issues/2018-07-09/2914389-8-do-not-test.patch (2914389 - Allow profiles to exclude dependencies of their parent)
Writing lock file
Generating autoload files