我可以用作曲家拉一个特定的提交吗?
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
,回来发现你也得到了,呵呵。哦,好吧,很高兴你得到它:)
这完全不正确。 “无法解析版本约束。”希望它有效。以上是关于我可以用作曲家拉一个特定的提交吗?的主要内容,如果未能解决你的问题,请参考以下文章