我正在尝试使用 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,如文档中所述。这成功克隆了主分支,但随后导致以下错误:
[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
所以我可以清楚地看到它在这里做什么。但是,似乎在此命令运行后cd
进入.git
目录并尝试运行:
git checkout "master" && git reset --hard "master"
大概是为了摆脱它拉的作曲家实例。但是,它在错误的目录中运行它,我不知道为什么..