我可以用作曲家拉一个特定的提交吗?

时间:2014-09-16 21:49:14

标签: php git composer-php

是否可以使用composer获取某个拉取请求?就像fork的特定提交一样?指令会是什么样的?

编辑:上下文这会有所帮助,所以我不必等待创建新标记。  我确信它会被合并,但我不知道当时开发人员是否会有机会而且我宁愿不推迟我的工作流程......

编辑2:现在我考虑一下,当开发人员制作公共包的分支时,他们可能需要在推送拉请求之前在一两个项目中测试自己的fork / p>

编辑3:示例我试图将此https://github.com/valorin/dispatcher/commit/c566eb6902f378abd59943e7ea09f61e734c8960拉下来无效,我试过了:

    "valorin/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

    "indatus/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

编辑4:取得巨大成功

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

添加dev-前缀做了诀窍

3 个答案:

答案 0 :(得分:25)

您无法直接引用拉取请求,但您始终可以获取特定提交。您只需要找到pull请求引入的提交哈希。 (如果您在提交标签中使用github)。

然后你需要在你的composer.json中使用这样的东西 -

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

mysoftware/thesoftware是您要使用的常用供应商/软件名称,以及'#'之后的部分。在右侧是您想要的特定提交哈希。

答案 1 :(得分:3)

建议和批准的解决方案适用于下载已在主存储库中合并的提交。

如果您想从下拉请求下载提交没有合并,您必须遵循不同的路径。

假设你有一个包vendor/package和那个" RandomUser"在GitHub上创建一个fork,创建一个新的分支patch-1并向它提交一些你想通过编辑器测试下载它们的编辑。

然后,您的composer.json文件必须以这种方式编写:

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

正如您所看到的,在require文件的composer.json部分中,您照常请求包,但是您添加了特定分支dev-patch1,并以{{1}为前缀}将最小稳定性降低到dev-,并添加dev特定提交ID。

然后你还添加了提交PR的用户的特定存储库:这使得Composer能够下载git存储库,检查其上的现有分支,读取其#1234567890文件并使用它来安装所需的依赖性。

答案 2 :(得分:1)

是:您只需要提交ID。假设您要引入this commit to Ardent (Laravel framework, PHP) - 您可以使用

强制执行该提交
"require": {
    "laravelbook/ardent": "master#9fbe73399d84fc726dc9e122955de444f4fb4901"
}

要从fork中提取,您只需要在require中指定该fork。例如,另一个回购的this is one of my forks。要获得该提交,我可以要求

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