我有以下情况: GitHub和Packagist上有包GitHub。我决定将其分叉到tcb13/package1中,以添加一些代码(这些代码最终将被合并到原始项目中,但这需要时间)。
稍后,我开发了另一个包,tcb13/package1-extension,它通过将分支tcb13/package1的一些方法继承到新的类来扩展它.
在我的tcb13/package1-extension,composer.json上,我写道:
{
"name": "tcb13/package1-extension",
"description": "...",
"keywords": [
],
"homepage": "https://github.com/tcb13/package1-extension",
"license": "MIT",
"authors": [
],
"repositories":
[
{
"type": "vcs",
"url": "https://github.com/tcb13/package1/"
}
],
"require": {
"author/package1": "dev-master"
},我告诉composer,我的扩展包需要author/package1,而且还有一个and存储库https://github.com/tcb13/package1/,并将包版本设置为dev-master,这样composer就可以从修改过的叉子下载author/package1,而不是原来的包……(如果我让它从tcb13/package1下载,这是行不通的)。
我向GitHub提交了上面的代码,并试图在一个新项目中要求tcb13/package1-extension,composer说:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for tcb13/package1-extension dev-master -> satisfiable by tcb13/package1-extension[dev-master].
- tcb13/package1-extension dev-master requires `author/package1` dev-master -> no matching package found.为什么会出错?当我开发我的扩展包时,我可以要求author/package1作为dev-master,因为它指向了我的叉回购,但是当我尝试要求tcb13/package1-extension时,它似乎没有查找我的叉子,而是尝试到原始项目寻找分支.为什么?
而且,这是我应该使用叉作为依赖项的方式吗?还有别的路吗?我最初试图要求作为tcb13/package1的叉子,但它会失败,但要求它,因为author/package1也告诉作曲家,我有一个额外的存储库工作到现在为止。
谢谢。
发布于 2015-06-11 01:48:11
我设法解决了这个问题。根据composer的说法,这不是一个错误,而是由于安全性而通过设计发生的事情。
来自GitHub 评论
考虑一下:您有一个依赖于我的包的项目。我依赖于一个对您的应用程序至关重要的包。我碰巧做了一个叉子来引入一个新特性,并意外地用我的composer.json中的存储库标记了一个发行版。您碰巧更新了您的包,并得到了我的叉子,这个叉子可能会损坏,而不是您在定义包依赖项时所期望的那样。
为了能够做我想做的事情,我不得不在我的最终项目tcb13/final-project中手动添加author/package1叉的URL (就像我在tcb13/package1-extension上所做的那样),比如:
{
"repositories":
[
{
"type": "vcs",
"url": "https://github.com/tcb13/package1/" // Fork of author/package1
},
{
"type": "vcs",
"url": "https://github.com/tcb13/package1-extension"
}
],
"require": {
"author/package1": "dev-master", // Reference to the original package, composer will fetch this from my fork defined above...
"tcb13/package1-extension": "dev-master" // My current extension package
}
}在composer update之后,一切都如期而至。
https://stackoverflow.com/questions/30719684
复制相似问题