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

时间:2013-11-11 21:20:07

标签: php git github composer-php

我正在尝试让Composer下载Behat / MinkSelenium2Driver软件包的最新提交。那个特殊的仓库只有一个主分支。我已经尝试了我能想到的每一种方法,包括删除文件并将其拉回来,以使其工作,但事实并非如此。

我如何才能获取最新提交的文件或至少来自下面提交的提交文件?

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

谢谢, 帕特里克

7 个答案:

答案 0 :(得分:53)

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

"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" }

答案 1 :(得分:9)

在删除composer.lock文件之前,上述选项均无效。

删除composer.lock文件后,它会删除最新的提交,而不必指定除分支名称之外的任何其他内容。 (在我的案例中是dev-master)

所以,从现在开始,我似乎会这样做:

1-删除composer.lock文件 2-删除需求文件夹。 (过时的文件)
3-作曲家安装。

答案 2 :(得分:6)

只需指定主分支:

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

PS:--dev只是指明它是测试/开发的要求,这可能是你想要的。

答案 3 :(得分:0)

在我们的案例中,以前的答案都没有奏效。事实证明这很简单:

Composer仅使用ROOT composer.json的存储库属性

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

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

答案 4 :(得分:0)

我认为最好的答案是使最小稳定性保持稳定。

"minimum-stability" : "stable"

然后在“要求”部分中,指定“ dev-master @ dev”

"require" : {
  "ResistFascism" : "dev-master@dev"
}

或者您可以做我不使用master所做的事情,而是创建自己的分支。因此,与其在master分支上运行ResistFascism软件包,不如在composer.json中指定一个dev分支。

"require" : {
  "ResistFascism" : "~1.2.1@dev"
}

我喜欢将所有外部软件包保持在稳定的版本上,因为这是我在生产环境中运行的,但是我经常在开发版本上管理自己的软件包。但是您也可以使用master。这是个人喜好。

答案 5 :(得分:0)

就我而言,@ 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

答案 6 :(得分:-4)

要下载最新版本的仓库,我通常会使用:

composer update behat/mink-selenium2-driver

这将使用最后一个可用的提交引用更新您的composer.lock。