在Composer中使用自定义Git存储库和Packagist

时间:2014-02-10 10:58:04

标签: composer-php

我想在提交拉取请求之前尝试在我的本地项目中对Doctrine ORM进行的修改。

我已将我的修改推送到我的GitHub存储库克隆中的default-lockmode分支,然后将以下内容添加到composer.json中:

{
    "require": {
        "doctrine/orm": "dev-default-lockmode"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/BenMorel/doctrine2.git"
        }
    ]
}

我认为这会支持我的Git存储库中的doctrine/orm包而不是Packagist的包,但仍然从Packagist加载其他包。

但是,当我运行composer update时,我收到以下错误:

  

您的要求无法解析为可安装的软件包。

     

问题1

     
      
  • doctrine / orm dev-default-lockmode的安装请求 - >可以通过doctrine / orm [dev-default-lockmode]来满足。
  •   
  • doctrine / orm dev-default-lockmode需要doctrine / dbal> = 2.5-dev,< 2.6-dev - >找不到匹配的包。
  •   
     

潜在原因:

     
      
  • 包名称中的拼写错误
  •   
  • 根据您的最小稳定性设置
  • ,包装不具备足够稳定的版本   

所以看起来它现在希望在我的GitHub存储库中找到所有包。

是否可以仅为doctrine/orm使用自定义存储库,但仍然将Packagist用于所有其他存储库?

2 个答案:

答案 0 :(得分:7)

我错过了minimum-stability设置:

{
    "minimum-stability": "dev",

    "require": {
        "doctrine/orm": "dev-default-lockmode"
    },

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/BenMorel/doctrine2.git"
        }
    ]
}

Doctrine DBAL从Packagist中正确提取,这不是问题所在。真正的问题是这个包还没有作为 stable 发布。

通常,答案在错误信息中,我忽略了:

  

根据您的最小稳定性设置

,包装不具备足够稳定的版本

答案 1 :(得分:1)

看起来您的问题是您所包含的软件包本身具有依赖性

"require": {
    "php": ">=5.3.2",
    "ext-pdo": "*",
    "doctrine/collections": "~1.1",
    "doctrine/dbal": ">=2.5-dev,<2.6-dev",
    "symfony/console": "2.*"
},

看起来他们正在尝试从您的存储库中解析。

您是否在配置中保留了对doctrine repos的原始引用。他们将需要解决收集/ dbal。

您的私人存储库应该优先考虑。

另外,为了满足依赖关系,您还应该查看别名

https://getcomposer.org/doc/05-repositories.md#using-private-repositories

如果您需要进一步的帮助,可以发布更多的作曲家文件。