PHPでComposer管理されているパッケージを取得する際に、gitの特定リビジョンの内容を取得してくる方法を説明します。
packagist.orgに登録されているほかの人が作ったパッケージを利用する際は、あまり使うことはありませんが、パッケージを自分で作っていて、ブランチ上で修正内容をコミットしたものが問題ないかチェックするときに使うと便利です。
普通に最新リビジョンを取得する場合
まずは、普通にrequireします。この場合、バージョンを指定していないので最新の安定板が取得できます。
> composer require nikic/fast-route
Using version ^1.2 for nikic/fast-route
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing nikic/fast-route (v1.2.0): Loading from cache
Writing lock file
Generating autoload files
リビジョンを指定してパッケージを取得
次は、gitにコミットされたリビジョン指定で、パッケージを取得してくるときの例です。
例えば、masterブランチのリビジョンf97a78b2264f2d7fc0506f86ab1d14b7d1cbf17dのコミット内容を取得したい場合は、以下の様にパッケージ名の後に、dev-master#f97a78b2264f2d7fc0506f86ab1d14b7d1cbf17d
の形式で指定します。
> composer require nikic/fast-route dev-master#f97a78b2264f2d7fc0506f86ab1d14b7d1cbf17d
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
- Removing nikic/fast-route (v1.2.0)
- Installing nikic/fast-route (dev-master f97a78b): Cloning f97a78b226 from cache
Writing lock file
Generating autoload files
リビジョン番号の指定方法
パッケージ名の後に指定されているdev-master#f97a78b...
で、特定リビジョンを指定しています。
dev-
は、特定のバージョン番号がついていない開発中のものを取得するという意味です。
master
は、ブランチ名です。もし、developブランチの内容がほしい場合は、dev-develp#...
と指定すればよいです。
最後のf97a78b...
は、取得したいgitのリビジョン名です。
composer.jsonに記述するときの記述方法
コマンドラインからの指定ではなくcomposer.jsonで指定する場合は、以下の様にします。表記の書式はコマンドラインで指定したときと同様です。
{
"require": {
"nikic/fast-route": "dev-master#f97a78b2264f2d7fc0506f86ab1d14b7d1cbf17d"
}
}
こちらもおススメ