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

Posted

技术标签:

【中文标题】我可以用作曲家拉一个特定的提交吗?【英文标题】:Can I pull a specific commit with composer? 【发布时间】:2014-11-10 19:20:26 【问题描述】:

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

edit: context 这会很有帮助,因此我不必等待创建新标签。 我确信它会被合并,但是我不知道开发人员什么时候会有机会,我宁愿不要推迟我所处的工作流程......

编辑 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】:

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

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

假设你有包 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- 以将最低稳定性降低到@ 987654329@,并添加 #1234567890 特定的提交 ID。

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

【参考方案3】:

是的:您只需要提交 ID。假设你想拉入this commit to Ardent (Laravel framework, php) - 你可以强制它提交给

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

要从 fork 中提取,您只需在 require 中指定该 fork。例如,另一个 repo 的 this is one of my forks。为了得到那个提交,我可以要求这个

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

【讨论】:

我遇到了这个问题:Could not parse version constraint master#c566eb6902f378abd59943e7ea09f61e734c8960: Invalid version string "master#c566eb6902f378abd59943e7ea09f61e734c8960" 它是公共回购吗?如果是这样,你能把我链接到它吗? :-) 试图拉这个github.com/valorin/dispatcher/commit/… 刚看了一下,发现develop 不起作用,所以用谷歌搜索它需要dev-develop,回来发现你也得到了,呵呵。哦,好吧,很高兴你得到它:) 这完全不正确。 “无法解析版本约束。”希望它有效。

以上是关于我可以用作曲家拉一个特定的提交吗?的主要内容,如果未能解决你的问题,请参考以下文章

我应该用 GIT 运送我的作曲家供应商目录吗

如果我在存储库上创建拉取请求,如果管理员决定只包含一些提交,那仍然算作我的贡献吗? [关闭]

如何在 GitHub 上恢复拉取请求提交

gitlab拉取项目后提交会保存自己的信息吗

我可以在 GitHub 上的 gist 上提出拉取请求吗?

更新拉取请求(添加提交)[重复]