【发布时间】:2015-08-23 12:59:56
【问题描述】:
我有以下情况:GitHub和Packagist上有包author/package1。我决定将其 fork 到 tcb13/package1 以添加一些代码(最终将合并到原始项目中,但这需要时间)。
后来,我开发了另一个包 tcb13/package1-extension,它通过将一些方法继承到新类中来扩展了 fork 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"
},
我告诉作曲家我的扩展包需要author/package1,并且还有一个附加存储库https://github.com/tcb13/package1/,并将包版本设置为dev-master,所以作曲家将从我修改后的fork下载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,因为它指向了我的 fork repo,但是当我尝试 require tcb13/package1-extension 时,它似乎没有寻找我的 fork 并试图去原来的项目找分支……为什么?
另外,这是我应该使用分叉作为依赖项的方式吗?还有其他方法吗?我最初尝试将 fork 要求为 tcb13/package1,但它会失败,但要求它为 author/package1 也告诉作曲家我有一个额外的存储库工作到现在。
谢谢。
【问题讨论】:
-
你是不是把composer.json里面的tcb13/package1的名字改了?
-
其实在
tcb13/package1composer.json 我没碰过name变量,应该是吧? -
不,你不应该。对于在原始包中被接受为拉取请求的简单修复程序,您可以在新版本之前生存。
-
那么,为什么它不起作用?为什么我可以在
tcb13/package1-extension处要求分叉,但是当我尝试在另一个项目中要求tcb13/package1-extension时却无法获得分叉?它应该总是失败或永远不会失败......不要在一个工作中失败,在另一个失败。
标签: git dependencies fork composer-php