【发布时间】:2020-09-08 01:29:58
【问题描述】:
我们在 VPN 后面有一个公司 GitLab 服务器。那里的包被设置为公开的,但它们实际上是“私有的”,因为未经我们的 VPN 授权,您无法访问存储库。
我创建了一个依赖于其他存储库的存储库(在同一台服务器上)。
回购 1:
"name": "xxx/repo1",
"repositories": [
{
"type": "vcs",
"url": "http://pvt/repo2"
}
],
"require": {
"xxx/repo2": "dev-master"
},
回购 2:
"name": "xxx/repo2"
我遇到的问题是当我尝试在我的其他服务之一中使用 repo1 时。
"name": "other/service",
"repositories": [
{
"type": "vcs",
"url": "http://pvt/repo1"
}
],
"require": {
"xxx/repo1": "dev-master"
},
"minimum-stability": "dev",
"prefer-stable": true,
像这样执行composer install 只会告诉我找不到repo2。我可以这样解决:
"name": "other/service",
"repositories": [
{
"type": "vcs",
"url": "http://pvt/repo1"
},
{
"type": "vcs",
"url": "http://pvt/repo2"
}
],
"require": {
"xxx/repo1": "dev-master"
},
但这远非理想。如果我有 10 个服务并且都需要 repo1 来运行,那么在 repo1 中引入一个新的依赖项将需要我更改 10 个 composer.json 文件。
为什么这个功能与其他依赖项的功能不同,以便自动拉取请求包的所有必需依赖项?
我尝试将此添加到配置中:
"config": {
"gitlab-domains": [
"pvt"
],
"gitlab-token": {
"pvt" : "---my-token---"
}
},
但这基本上没有任何作用。
我也尝试用确切的服务器 IP 替换 pvt,但没有任何改变。
有没有办法让这个工作?
注意:我不想使用任何外部服务,例如 Private Packagist 或 Satis。
【问题讨论】:
-
这能回答你的问题吗? Load two custom libraries
-
正如我所说,我已经有了这个解决方案。但是这样不适合我,因为我需要更新多个 json 文件,以防我向
repo1添加新的依赖项 -
这就是 Composer 的工作方式。如果您想使用私有存储库,您可能需要查看getcomposer.org/doc/articles/…,但您仍然需要在每个包中添加私有存储库,因为存储库不是从依赖项继承的。
标签: php package gitlab composer-php repository