将github镜像到Gitlab

将github镜像到Gitlab

在本地 gitlab 中我创建了 project nova 的副本(https://github.com/openstack/nova)。

我如何使本地 nova repo 与 github 保持同步,每小时或每天更新一次?

我想要一个与这里描述的 bitnami 类似的解决方案: http://wiki.bitnami.com/Applications/BitNami_GitLab#Keeping_in_sync_with_the_GitLab_repository_at_GitHub

(我使用 Devstack 安装 Openstack。)

答案1

GitLab现在已经内置此功能!
自 GitLab EE 8.2 起它得到支持万岁!

从远程存储库拉取

您可以设置一个存储库,以自动从上游存储库更新其分支、标签和提交
。...

创建新项目时,您可以在选择从“按 URL 导入任何存储库”时启用存储库镜像。输入要从中拉取的 Git 存储库的完整 URL,然后单击镜像仓库复选框。

GitLab 自动镜像
(来源:gitlab.com

对于现有项目,您可以通过访问项目的设置➔ 存储库并搜索“从远程存储库提取”部分。选中“镜像存储库”框并点击保存更改在底部。
...

答案2

如果你绝不需要本地提交,下面的方法可以起作用:

使用以下命令克隆 repo --mirror

git clone --mirror https://github.com/openstack/nova.git

然后在 cronjob 中执行以下每小时更新操作:

0 * * * * cd /path/to/nova.git && git fetch

设置--mirrorrefspecs 的方式使得后续提取将更新所有本地引用,因此您不需要合并更改。当然,这意味着推送到该存储库的提交将丢失。

答案3

我写了一个项目,目的是向 GitLab 添加远程镜像。你可以在这里查看...

https://github.com/sag47/gitlab-mirrors

答案4

您可以使用cron 作业

在您的终端类型中crontab -e(编辑您的 crontab)并在底部添加以下内容的新行。

* 0 * * * git clone ssh://username@hostname:port/repo

它将在每天午夜运行一次克隆。

相关内容