用作曲家取回叉子
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-master
或 dev-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@dev
或 2.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"
}
}
这已在 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-master
或 dev-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@dev
或2.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"
}
}