我有两个私有仓库,我们称它们为RepoA
和RepoB
。RepoA
是RepoB
需要的,它们都是 GitHub 上的私有存储库,端口620
。
以下是两个存储库中的composer.json
:
回购 A
{
"name": "namespace/repoA",
"description": "My repository A.",
"require": {
"php": ">=5.4"
}
}
回购 B
{
"name": "namespace/repoB",
"description": "My repository B.",
"repositories": [
{
"type": "vcs",
"url": "ssh://git@git.domain.com:620/namespace/repoA.git"
}
],
"require": {
"namespace/repoA": "dev-master"
}
}
现在假设我有一个项目(ProjectA
(,我想RepoB
安装它。
项目 A
{
"repositories": [
{
"type": "vcs",
"url": "ssh://git@git.domain.com:620/namespace/repoB.git"
}
],
"require": {
"namespace/repoB": "dev-master"
}
}
但是,当我运行composer install
时,出现以下错误:
问题1 - 命名空间/repoB dev-master 的安装请求 -> 命名空间/repoB[dev-master] 可以满足。 - 命名空间/repoB dev-master 需要命名空间/repoA dev-master ->找不到匹配的包。
我知道它无法找到该包,因为它是一个私有存储库,但是既然它在repoB
的repositories
内,为什么不获取它?
我认为如果我将存储库添加到Project A
它会起作用:
{
"repositories": [
{
"type": "vcs",
"url": "ssh://git@git.domain.com:620/namespace/repoA.git"
},
{
"type": "vcs",
"url": "ssh://git@git.domain.com:620/namespace/repoB.git"
}
],
"require": {
"namespace/repoB": "dev-master"
}
}
但是在我将其添加到我的Project A
require
之前,它仍然不起作用:
{
"repositories": [
{
"type": "vcs",
"url": "ssh://git@git.domain.com:620/namespace/repoA.git"
},
{
"type": "vcs",
"url": "ssh://git@git.domain.com:620/namespace/repoB.git"
}
],
"require": {
"namespace/repoB": "dev-master",
"namespace/repoA": "dev-master"
}
}
现在我的问题是...如何通过仅指定我的repoB
来使作曲家安装我的repoA
?
你不能,这里有一个解释:为什么 Composer 不能递归加载存储库?