如何让 Composer 从 GitHub 下载包的主分支中的最新提交


How do I get Composer to download the latest commit in the master branch from GitHub for a package?

我正在尝试让作曲家下载Behat/MinkSelenium2Driver包的最新提交。该特定存储库只有一个主分支。我已经尝试了我能想到的所有方法,包括删除文件并让它将它们拉回去,让它工作,但它没有。

我如何让它拉入最新提交的文件,或者至少从下面列出的提交中提取文件?

具体来说,我想得到这个提交:https://github.com/Behat/MinkSelenium2Driver/commit/2e73d8134ec8526b6e742f05c146fec2d5e1b8d6

谢谢帕特里克

只有一种方法可以抓取存储库的头部:

"require": { "behat/mink-selenium2-driver" : "dev-master" }
"minimum-stability": "dev"

哦,好吧,至少有两种方式:

"require": { "behat/mink-selenium2-driver" : "dev-master as 1.1.x-dev" }
"minimum-stability": "dev"

可能至少有三种方式:

"require": { "behat/mink-selenium2-driver" : "dev-master#2e73d8134ec8526b6e742f05c146fec2d5e1b8d6" }
"minimum-stability": "dev"

因为该存储库实际上将主分支别名为 1.1.x-dev,所以这也可以在不影响所有其他软件包的最低稳定性的情况下工作:

"require": { "behat/mink-selenium2-driver" : "1.1.*@dev" }

只需指定主分支:

composer require --dev behat/mink-selenium2-driver:dev-master

PS:--dev只是为了指定它是一个测试/开发要求,这可能是你想要的。

就我而言,@Sven上述 03 个建议的解决方案都不起作用。这是我的解决方案,以防有人仍在类似的环境中挣扎。

  • 删除现有使用情况(如果有composer remove the_vendor/the_package_name

  • 如果您有权访问包存储库,请为其创建第一个标记(例如:0.1.0)

git tag --annotate 0.1.0 --message "Initial version 0.1.0" 
git push origin 0.1.0

:每次更新包存储库时,请归属一个新标记(例如:0.1.1)并在主应用程序上composer update the_vendor/the_package_name以更新composer.lock

  • 如果无权访问包存储库,请选择现有标记版本(不dev-master

  • 从主应用需要它 composer require the_vendor/the_package_name:^0.1

master相比

在我们的例子中,以前的答案都不起作用。原来很简单:

作曲家仅使用 ROOT composer.json 的存储库属性

https://getcomposer.org/doc/04-schema.md#repositories

在我们的例子中,我们试图从我们的一个传递依赖项的dev-master那里获取最新的提交。github和packagist之间的钩子存在一些问题,阻止它正常工作,我们花了几个小时才意识到我们编辑了错误的composer.json(我们库中带有依赖项的那个)而不是我们正在安装的顶级composer.json。