保持 Gitlab 存储库与隔离网络同步

保持 Gitlab 存储库与隔离网络同步

我有 3 个网络(network_1network_2network_3)。这三个网络是隔离的。

network_1有一个 Gitlab 实例。

我想在 上托管一个 Gitlab 实例network_2network_3它应该是 上的 Gitlab 实例的镜像network_1

我有第四个网络 ( network_4),我可以在 中存储文件并从 和 中network_1下载这些文件 。隧道或代理无法通过 工作。network_2network_3network_4

我发现的一个选择是:

  • 在 Gitlab 实例上导出存储库/仓库network_1
  • 传输导出文件(通过network_4)至network_2network_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.bundlenetwork_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

相关内容