【发布时间】:2013-11-24 11:43:03
【问题描述】:
我正在尝试使用 official documentation 和 here 中所述的 composer 加载我在 BitBucket 上托管的库,但一直收到以下错误:
[Composer\Repository\InvalidRepositoryException]
No valid composer.json was found in any branch or tag of [repository URL], could not load a package from it.
这是我的项目 composer.json:
{
"name": "Project name",
"require": {
"my-vendor/my-package": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": [repository URL]
}
]
}
这是我远程存储库中的 composer.json(显然找不到):
{
"name": "my-vendor/my-package",
"version": "0.3",
"autoload": {
"psr-0": {
"NS_": "src"
}
}
}
我应该提一下,两个 composer.json 文件都应该在根目录中。
其他一些注意事项:
我也尝试过“非作曲家包”方法,我在我的项目 composer.json 中指定包信息,并从我的远程存储库中省略 composer.json,如 documentation 中所述。这成功克隆了 master 分支,但随后导致以下错误:
[RuntimeException]
Failed to execute git checkout "master" && git reset --hard "master"
fatal: Not a git repository (or any of the parent directories): .git
但是,包已按预期下载到 /vendor,所以我不确定它为什么要再次尝试检查 master。
这不是我希望解决此问题的方式(因为我宁愿使用远程存储库中的 composer.json),但它可能有助于在其他地方发现问题。
感谢您的帮助。
编辑
我已经设法通过 HTTP 引用 package.json 来让它工作:
"repositories": [
{
"type": "composer",
"url": "http://localhost/packages.json"
}
]
packages.json 看起来像:
{
"packages": {
"vendor/my-package": {
"dev-master": {
"name": "vendor/my-package",
"version": "dev-master",
"source": {
"url": [repository URL],
"type": "git",
"reference": "master"
}
}
}
}
}
这是让它工作的唯一方法吗?如果我只打算使用一两个内部包,那么托管我自己的 packages.json 文件似乎有点矫枉过正。
不管怎样,这给了我之前提到的同样的 Git 错误。
编辑 2
强制出错(无效的 SSH 密码)给出:
[RuntimeException]
Failed to execute git clone "[repository URL]" "C:\workspace\DFv3\vendor\vendor/my-package" && cd /D "C:\workspace\DFv3\vendor\vendor/my-package" && git remote add composer "[repository URL]" && git fetch composer
所以我可以清楚地看到它在这里做什么。但是,似乎在这条命令将cds 运行到.git 目录并尝试运行:
git checkout "master" && git reset --hard "master"
大概是为了摆脱它拉出的作曲家实例。但是,它在错误的目录中运行它,我不知道为什么..
【问题讨论】:
-
远程仓库中的composer.json是存在于master分支还是只是一个开发分支? Composer(不幸的是)只在我相信的主分支中查找。
-
奇怪,错误消息暗示它在所有分支中查找。无论哪种方式,master 都有 composer.json 文件。
-
主分支是否设置为“默认分支”(查找位置在stackoverflow.com/questions/14040754/… 中进行了描述)我以前从未见过有人必须使用
"reference": "master"。跨度> -
是的,master 被设置为 Bitbucket 的主分支。如果我省略“reference”,我会收到一条错误消息,指出它希望“source”包含属性“type”、“url”和“reference”。
标签: php composer-php package-managers