在子存储库

时间:2017-07-18 19:55:46

标签: composer-php gitlab

我有两个私人存储库,我们称之为RepoARepoBRepoA需要RepoB,它们都是gitlab上的私有存储库,端口为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的安装请求 - >可以通过namespace / repoB [dev-master]来满足。       - namespace / repoB dev-master需要namespace / repoA dev-master - >找不到匹配的包。

我知道它无法找到包,因为它是私有存储库,但由于它位于repositories的{​​{1}}内,为什么不提取它?

我认为如果我将存储库添加到repoB

,它会起作用
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" } } 添加到我的require之前,它仍然无效:

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", "namespace/repoA": "dev-master" } } 来让作曲家安装repoA

1 个答案:

答案 0 :(得分:0)

你不能,这里有一个解释:Why can't Composer load repositories recursively?