我可以使用 composer 拉取特定的提交吗?

2022-08-30 12:15:59

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

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

编辑2:现在我想起来了,当然,当开发人员制作一个公共包的分支时,他们可能需要在一两个项目中测试自己的分支,甚至在推送拉取请求之前。

编辑3:示例我试图拉这个 https://github.com/valorin/dispatcher/commit/c566eb6902f378abd59943e7ea09f61e734c8960 无济于事,我试过了:

    "valorin/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

    "indatus/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

编辑4:巨大的成功

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

添加前缀就成功了dev-


答案 1

您无法直接引用拉取请求,但始终可以获取特定提交。您只需要找到拉取请求引入的提交哈希。(如果您使用的是github,它位于提交选项卡中)。

然后,您需要在 composer.json 中使用类似的东西 -

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

您常用的供应商/软件名称在哪里,右侧“#”后面的部分是您想要的特定提交哈希。mysoftware/thesoftware


答案 2

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

如果要从尚未合并的拉取请求下载提交,则必须遵循其他路径。

假设你有这个包,“RandomUser”在GitHub上创建了一个分支,创建了一个新的分支,并提交了一些你想要测试通过作曲家下载它们的编辑。vendor/packagepatch-1

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

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

如您所见,在文件的部分中,您像往常一样请求包,但是您添加了特定的分支,将其作为前缀以降低最低稳定性,并添加特定的提交ID。requirecomposer.jsondev-patch1dev-dev#1234567890

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


推荐