【发布时间】:2014-10-20 10:42:30
【问题描述】:
我正在寻找一种在 2 个 git git 服务器上自动同步(镜像)一个 repo 的方法。 不幸的是,由于权限原因,我不能拥有一台服务器。
人们应该能够将更改(和分支)推送到其中一台服务器,并且这些更改应该自动复制到另一台服务器上。
关于如何做到这一点的任何想法?
非常感谢
【问题讨论】:
我正在寻找一种在 2 个 git git 服务器上自动同步(镜像)一个 repo 的方法。 不幸的是,由于权限原因,我不能拥有一台服务器。
人们应该能够将更改(和分支)推送到其中一台服务器,并且这些更改应该自动复制到另一台服务器上。
关于如何做到这一点的任何想法?
非常感谢
【问题讨论】:
这在“复制 Git 存储库”的标题下得到了很好的解释。取自githubarticle:
如果您想在另一个位置镜像存储库,包括从原始位置获取更新,您可以克隆一个镜像并定期推送更改。
# Make a bare mirrored clone of the repository
git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
# Set the push location to your mirror
cd repository-to-mirror.git
git remote set-url --push origin https://github.com/exampleuser/mirrored
镜像克隆包含所有远程分支和标签,但每次获取时都会覆盖所有本地引用,因此它始终与原始存储库相同。设置推送的 URL 可以简化推送到您的镜像。要更新您的镜像,获取更新并推送,这可以通过运行 cron 作业来自动完成。
git fetch -p origin
git push --mirror
如果您想通过代码或 Ruby 脚本自动执行此操作,您也可以使用 Git Duplicator Ruby gem。
【讨论】:
为此,您有一些部署系统,例如 Jenkins。在那里,您可以添加您的服务器并将命令放置在所有服务器上运行。
例如,您可以为 SSH 安装一些 Jenkins 插件,或者使用 Chef / Puppet 或 Capistrano 之类的东西。有一些工具。
【讨论】: