web-dev-qa-db-ja.com

have composer update get latest version from git repo

チームでの開発のために、gitサブモジュールから離れようとしています。これの最も重要な理由は、チームメンバーがサブモジュールで変更をコミットしたが、Originにプッシュするのを忘れたが、「ルート」プロジェクトでこの新しいコミットへの参照をプッシュした場合、Originが壊れ、他の開発者がreference is not a treeエラー。問題の開発者が家に帰る前にプッシュした場合、これは問題になる可能性があり、ツリーではないその参照は、どこかの電車の中で彼のバッグに入っている開発者のラップトップでのコミットを示しています。

Gitサブモジュールをcomposerに置き換えようとしています。私の推論は、gitが私の依存関係を知らない場合、これらの依存関係はリポジトリを壊すことはできないということです。私はpackagistからパッケージを追加する方法を知っています。また、主に このブログ投稿 の助けを借りて、独自のgitリポジトリをcomposerに追加することもできました。

問題、そしてパズルの最後のピースは、私たちの依存関係が私たちが積極的に取り組んでいるgitリポジトリであるということです。依存関係の1つに更新をプッシュする場合、開発者のローカルコピーがcomposer updateを実行するときに、この最新バージョンに更新するようにします。最も近いのは、依存関係への変更ごとにタグを作成してから、composer.jsonをこの新しいタグのIDで更新することです。

私が知りたいのは、composer常に特定のブランチの最新のコミットをチェックする方法があるかどうか、またはこれが不可能な場合は常に最新のタグを取得する方法があるかどうかです。 composer updateを実行するときは、タグ付けを気にしません。開発中にcomposer.jsonを更新し続けたくないだけです。

テスト用に持っているcomposerファイル:

{
    "config": {
        "vendor-dir": "app/vendor"
    },
    "repositories":
    [
        {
            "type": "package",
            "package": {
                "name": "wkjagt/seagull",
                "version": "1.0",
                "source": {
                    "url": "[email protected]:wkjagt/Seagull.git",
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    ],
    "require": {
        "wkjagt/seagull": "1.0.*"
    }
}

1.0.*が1.0から始まる最新のタグを取得することを期待していましたが、composerがすでに1.0.1になっていると、作成しても1.0.2を取得できません。これを手伝っていただければ幸いです。

19
wkjagt

リポジトリセクションで各バージョンを個別に指定する必要がない場合は、composer.jsonファイルをwkjagt/Seagullに追加し、次のようなパッケージを含める必要があります。

{
   "type": "vcs",
   "url": "https://github.com/wkjagt/Seagull"
},

その後、Composerはタグを読み取り、バージョンとして扱うことができます。常に最新バージョンを取得したい場合は、devフラグが付いたパッケージが必要です。

"require": {
    "wkjagt/seagull": "@dev"
}
23
schmunk