3

私は主に git リポジトリ (ローカルとリモートの両方) を管理するために composer を使用します。Composer は、過去のすべてのコミットで composer.json のタグ付きインスタンスをすべて読み取ります。

Reading composer.json of tomekwi/composer-installers (v1.0.0)
Importing tag v1.0.0 (1.0.0.0)
Reading composer.json of tomekwi/composer-installers (v1.0.1)
Importing tag v1.0.1 (1.0.1.0)
Reading composer.json of tomekwi/composer-installers (v1.0.2)
Importing tag v1.0.2 (1.0.2.0)
Reading composer.json of tomekwi/composer-installers (v1.0.3)
Importing tag v1.0.3 (1.0.3.0)
Reading composer.json of tomekwi/composer-installers (v1.0.4)
Importing tag v1.0.4 (1.0.4.0)
Reading composer.json of tomekwi/composer-installers (v1.0.5)
Importing tag v1.0.5 (1.0.5.0)
Reading composer.json of tomekwi/composer-installers (v1.0.6)
Importing tag v1.0.6 (1.0.6.0)
Reading composer.json of tomekwi/composer-installers (1.x)
Importing branch 1.x (1.x-dev)

...etc

より大きなリポジトリには時間がかかります。さらに、github で問題が発生します ( https://circleci.com/docs/composer-api-rate-limit )

私の理解が正しければ、その目的は各 composer.json ファイルからバージョン番号を抽出することです。composer がタグ名だけを読み取って正しいバージョンを選択した場合、はるかに迅速になります。リクエスト"tomekwi/composer-installers": "~1.0"は次のようになります。

Reading tags of tomekwi/composer-installers
  - Picked matching tag (v1.0.6)
Reading composer.json of tomekwi/composer-installers (v1.0.6)
  - Installing tomekwi/composer-installers (v1.0.6)

..そして、30 分ではなく 0.5 秒かかります。

そうすることは可能ですか?

4

1 に答える 1

2

Composer は、リポジトリ内にあるパッケージを認識していません。そのため、調べるには を読む必要がありcomposer.jsonます。

また、ソフトウェアは名前が変更される可能性があるため、リポジトリで見つかったすべてのタグが同じパッケージ名に属しているという保証はありません。

Packagist または Satis のローカル インスタンスをホストすることを検討する必要があります。これらのツールはリポジトリをスキャンし、Composer が機能するために必要な情報を取得します。Satis は、見つかったタグを ZIP ファイルにダンプすることもあります。これにより、インストール プロセスも高速化されます (通常、ローカル サーバーからダウンロードしたファイルを解凍する方が、リポジトリを複製するよりも高速です)。

于 2013-09-25T21:41:55.750 に答える