web-dev-qa-db-ja.com

composerで特定のコミットをプルできますか?

Composerで特定のプルリクエストをフェッチすることはできますか?フォークからの特定のコミットが好きですか?ディレクティブはどのように見えますか?

edit:contextこれは役立つので、新しいタグが作成されるのを待つ必要はありません。私はそれがマージされると確信していますが、いつ開発者がチャンスを得るかどうかはわかりませんし、私が入っているワークフローをやめたくありません...

編集2:今考えてみると、開発者がパブリックパッケージのフォークを作成するとき、プロジェクト内で独自のフォークをテストする必要があるかもしれません。プルリクエストをプッシュする前に2つ

編集3:例私はこれをプルしようとしています https://github.com/valorin/dispatcher/commit/c566eb6902f378abd59943e7ea09f61e734c896 =無駄に、私は試しました:

    "valorin/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

そして

    "indatus/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

編集4:大成功

"require": {
        "indatus/dispatcher": "dev-develop#c566eb6"
}

dev-接頭辞はトリックをしました

32
Moak

プルリクエストを直接参照することはできませんが、特定のコミットをいつでも取得できます。あなたはプルリクエストが導入するコミットハッシュを見つける必要があるだけです。 (githubを使用している場合は、[コミット]タブにあります)。

次に、composer.jsonでこのようなものを使用する必要があります-

 "require": {
    "mysoftware/thesoftware": "dev-master#3f38376d"
}

どこ mysoftware/thesoftwareは、通常使用するベンダー/ソフトウェア名です。右側の「#」の後の部分は、必要な特定のコミットハッシュです。

30
Jez

提案され承認されたソリューションは、すでにメインリポジトリにマージされているコミットをダウンロードするために機能します。

プルリクエストからコミットをダウンロードしたい場合まだマージされていない別のパスに従う必要があります。

パッケージvendor/packageがあり、「RandomUser」がGitHubにフォークを作成し、新しいブランチpatch-1を作成して、composerを介してそれらをダウンロードしてテストしたい編集をコミットするとします。

次に、composer.jsonファイルを次のように記述する必要があります。

{
    "type": "project",
    "license": "proprietary",
    "require": {
        ...
        "vendor/package": "dev-patch-1#1234567890",
        ...
    },
    ...
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/RandomUser/Package.git"
        }
    ]
}

ご覧のように、通常どおりcomposer.jsonファイルのrequireセクションでパッケージを要求しますが、特定のブランチdev-patch1を追加し、プレフィックスとしてdev-を付けて最小の安定性をdevに減らし、#1234567890に特定のコミットIDを追加します。

次に、PRをコミットしたユーザーの特定のリポジトリも追加します。これにより、Composerがgitリポジトリをダウンロードし、そこに存在するブランチを確認し、composer.jsonファイルを読み取り、それを使用して、必要な依存関係をインストールします。

6
Aerendir

はい:コミットIDが必要です。引き込みたいとしましょう このArdent(Laravelフレームワーク、PHP)へのコミット -強制的にそのコミットに強制できます

"require": {
    "laravelbook/ardent": "master#9fbe73399d84fc726dc9e122955de444f4fb4901"
}

フォークからプルするには、代わりにrequireでそのフォークを指定する必要があります。たとえば、別のリポジトリの これは私のフォークの1つです です。そのコミットを得るために、私はこれを要求することができます

"require": {
    "JoeChilds/Swiftlet": "master#effd5c59f398d56fec261cf1d73a7397cdf78a56"
}
2
Joe