我有 3 个网络(network_1
、network_2
和network_3
)。这三个网络是隔离的。
我network_1
有一个 Gitlab 实例。
我想在 上托管一个 Gitlab 实例network_2
。network_3
它应该是 上的 Gitlab 实例的镜像network_1
。
我有第四个网络 ( network_4
),我可以在 中存储文件并从 和 中network_1
下载这些文件 。隧道或代理无法通过 工作。network_2
network_3
network_4
我发现的一个选择是:
- 在 Gitlab 实例上导出存储库/仓库
network_1
。 - 传输导出文件(通过
network_4
)至network_2
和network_3
。 network_2
在和上导入导出文件network_3
。
缺点是:
- 有点慢。(导出需要时间,传输需要时间,导入也需要时间)。
- 如果项目已经存在,则无法导入,因此每次我想要导入导出文件时,我都需要先删除该项目。
- 无法仅导入更改,所以每次我都需要导入整个存储库。
还有其他选择/解决方案吗?
答案1
我找到了一个解决方案。
在network_1
:
从 Gitlab 项目创建 Git 存储库:
git clone /var/opt/gitlab/git-data/<path to project>.git /tmp/repository_name.git
从 Git 存储库创建 Git 包:
cd /tmp/repository_name.git
git bundle create /tmp/repository_name.bundle --all
传送/tmp/repository_name.bundle
到network_2/3
。
在network_2/3
:
从 Git 包创建 Git 存储库:
git clone --bare /tmp/repository_name.bundle /tmp/repository_name.git
设置原点 URL:
cd /tmp/repository_name.git
git remote set-url origin https://url-to-gitlab-on-network2-3/group/project.git
将更改/内容推送到 Gitlab:
git push --mirror