用作曲家取回叉子

retrieving fork with composer

这已在 SO 的多个问题中多次讨论,但所有给出的答案都拒绝为我工作接受这个答案:

Contributing to open source bundles from vendor directory?

我已经在多台机器上对此进行了测试,所以我很确定这不是一个孤立的事件。

但是我读到使用类型 "package" 被认为是不好的做法。有人可以向我解释为什么这不起作用吗?它不会加载分叉的存储库!

{
    "repositories":
    [
        {
            "type": "vcs",
            "url": "https://github.com/flyandi/lumen-doctrine.git"
        }
    ],
    "require": {
        "nordsoftware/lumen-doctrine": "dev-master@dev"
    }
}

更新

所以事实证明它与包的稳定性有关更多关于这里:

https://igor.io/2013/02/07/composer-stability-flags.html

然后我尝试了这个有效的方法:

{
    "repositories":
    [
        {
            "type": "vcs",
            "url": "https://github.com/flyandi/lumen-doctrine.git"
        }
    ],
    "require": {
        "nordsoftware/lumen-doctrine": "dev-master@dev"
    },
    "prefer-stable" : true,
    "minimum-stability": "dev"
}

我不明白的是@dev 标志不起作用的方式?有人可以详细说明吗?

默认情况下,Composer 尝试解析为一组稳定的包。 它不会解析,因为您正在获取的包(通过别名) 使用开发依赖本身。您正在获取的包 lumen-doctrine 的依赖项 doctrine/orm 在开发模式下是必需的。 并且对这种开发依赖性的需求会冒泡到您的包中。

当您为 nordsoftware/lumen-doctrine 添加 dev-masterdev-master@dev 时 它只适用于这个包。 @dev 明确表示,由于 dev- 前缀我们已经知道:它是对开发版本的请求,但它不会改变所有包的稳定性 - 而且它不会设置包依赖的稳定性。

nordsoftware/lumen-doctrine 的安装请求可由 dev-master(以及许多标记的版本)满足。

问题是包doctrine/orm不满足,因为nordsoftware/lumen-doctrine dev-master requires doctrine/orm ~2.6@dev

您的选择是:

  • 将所有包的minimum-stability设置为dev(你已经有了)
  • 或者只添加 doctrine/orm 并仅在此包上降低稳定性
    • 通过使用 ~2.6@dev2.6.x-dev

{
    "repositories":
    [
        {
            "type": "vcs",
            "url": "https://github.com/flyandi/lumen-doctrine.git"
        }
    ],
    "require": {
        "nordsoftware/lumen-doctrine": "dev-master",
        "doctrine/orm":                "~2.6@dev"
    }
}