composer update –lock とは?
composer update --help
から抜粋です。
update
The update command reads the composer.json file from the current directory, processes it, and updates, removes or installs all the dependencies.
カレントディレクトリの composer.json を読み込み、その内容を実行し、依存パッケージのアップデート、インストールまたは削除を行う。
update –lock
--lock Only updates the lock file hash to suppress warning about the lock file being out of date.
無効となってしまった lock ファイルの警告を抑えるために、 lock ファイルの hash の更新を行う。
経緯と実践
- Laravel 5.5 既存のデータベースからマイグレーションファイルを一発で生成した手順 – oki2a24
composer require --dev "xethron/migrations-generator"
- Laravel 5.5 既存のデータベースからレコード情報のシーダーファイルを一発で生成した手順 – oki2a24 で
composer require orangehill/iseed --dev
以上を別々の Git ブランチで行い、あとで両方ともマージしようとしました。すると、コンフリクトが発生しました><。
$ git diff
diff --cc composer.lock
index c3fc7de,84be2cd..0000000
--- a/composer.lock
+++ b/composer.lock
@@@ -4,7 -4,7 +4,13 @@@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
++<<<<<<< HEAD
+ "content-hash": "b61cb1824cb1dc44c006a8ac1312a334",
++||||||| merged common ancestors
++ "content-hash": "b7904d07d1e1765a0a199aa11d6301a3",
++=======
+ "content-hash": "4030aaacf66a3e113314df2d7da36360",
++>>>>>>> inverse-seeed-generator
"packages": [
{
"name": "dnoegel/php-xdg-base-dir",
$
参考と言いますか、まんま解決方法を次のページから学びました。
3 つの content-hash のうち、適当に真ん中の物を残して残りは削除し、 composer.lock を保存しました。
その後、 composer update --lock
を実行しますと、新しい content-hash が発行されました。
composer update --lock
によって、 lock ファイルに対しては content-hash の更新のみが行われ、 composer.json には変更は一切行われませんでした。これのみかと思いましたら、依存パッケージの更新も行われ (アップデート、インストール、アンインストール) も行われました。
$ docker-compose run --rm composer update --lock
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 2 removals
- Removing krlove/eloquent-model-generator (1.3.2)
- Removing krlove/code-generator (1.0.0)
- Installing orangehill/iseed (v2.6.1): Downloading (100%)
- Installing xethron/laravel-4-generators (3.1.1): Downloading (100%)
- Installing xethron/migrations-generator (v2.0.2): Downloading (100%)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating optimized autoload files
*******************************************
/!\ Warning, you're using a deprecated
¨¨¨ version of Carbon, we will soon stop
providing support and update for 1.x
versions, please upgrade to Carbon 2.
*******************************************
Most features of Carbon 1 are still available in Carbon 2.
See how to migrate: https://carbon.nesbot.com/docs/#api-carbon-2
Please consider upgrading your Laravel dependencies to be compatible with Carbon 2:
- laravel/framework at least to version 5.8.0
If you can't update Laravel, check https://carbon.nesbot.com/ to see how to
install Carbon 2 using alias version and our adapter kylekatarnls/laravel-carbon-2
You can run './vendor/bin/upgrade-carbon' to get help in updating carbon and other frameworks and libraries that depend on it.
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: orangehill/iseed
Discovered Package: xethron/migrations-generator
Package manifest generated successfully.
$
コンフリクトも、解決しました。
$ git diff
diff --cc composer.lock
index c3fc7de,84be2cd..0000000
--- a/composer.lock
+++ b/composer.lock
@@@ -4,7 -4,7 +4,7 @@@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "b61cb1824cb1dc44c006a8ac1312a334",
- "content-hash": "4030aaacf66a3e113314df2d7da36360",
++ "content-hash": "4d22c92167c4f24b0127c8a5dc722b27",
"packages": [
{
"name": "dnoegel/php-xdg-base-dir",
$
おわりに
初めて遭遇したコンフリクトでしたけれども、 comoser にはそれを見越した機能があって助かりました♪
次に同じことがあった場合、具体的な対処方法は忘れていると思いますが、このページ、または、 composer update --help
で解決できたといことは、きっと出てくると思います。
以上です。