是否有可能有gitlab设置自动同步(镜像)在另一地点举行的仓库?
目前,最简单的方法,我知道这样做的,涉及到手动推到两个(gitlab和其他)存储库,但这是耗时且容易出错。
最大的问题是,一个镜子可以重新同步是两个用户同时更改推送到两个不同的存储库。 我可以拿出来避免此问题最好的方法是确保用户只能推到库之一。
是否有可能有gitlab设置自动同步(镜像)在另一地点举行的仓库?
目前,最简单的方法,我知道这样做的,涉及到手动推到两个(gitlab和其他)存储库,但这是耗时且容易出错。
最大的问题是,一个镜子可以重新同步是两个用户同时更改推送到两个不同的存储库。 我可以拿出来避免此问题最好的方法是确保用户只能推到库之一。
更新2016年12月:镜像支载有GitLAb EE 8.2或以上版本:见“ 库镜像 ”。
正如评论说晓东齐 :
此答案可以在不使用任何命令行被简化(只是将它安放Gitlab回购管理接口)
原来的答案(2013年1月)
如果您的远程镜像回购是一个裸露的回购 ,那么你就可以在后收到钩添加到您的gitlab管理回购,并推到它远程回购。
#!/bin/bash
git push --mirror slave_user@mirror.host:/path/to/repo.git
如Gitolite(由Gitlab使用) 提到 :
如果你想在只有少数特定的仓库来安装一个钩子,直接做在服务器上。
这将是:
~git/repositories/yourRepo.git/hook/post-receive
买者(更新Ocotober 2014)
西罗桑蒂利指出的评论 :
今天(Q4 2014),这将失败 ,因为GitLab自动符号链接github.com/gitlabhq/gitlab-shell/tree/...到它所管理的每个存储库。
所以,如果你做这种改变,每次你修改数据库将试推。
不要升级时提及可能的冲突gitlab-shell
,以及当前脚本是一个Ruby脚本,没有庆典(你不应该将其删除!)。你可以通过读取当前目录名,并确保与远程之间的一一对应解决这个问题,但我建议人们呆在远远离那些事
见(投票支持) feeadback“ 自动推送到远程镜像回购推GitLab回购后 ” 。
更新2016年7月:我看到增加了GitLab EE(企业版)这样的功能: MR 249
需要注意的是,近期Remote Mirror Repository
( 问题17940 )可能会非常棘手:
目前,我想要对我公司无损有限公司(开源NPM模块的主要发展转变https://www.npmjs.com/~lossless )从GitHub.com到GitLab.com
我导入所有的回购从GitHub,但是当我尝试关掉
Mirror Repository
和切换Remote Mirror Repository
与原来的GitHub网址我得到一个错误说:
Remote mirrors url is already in use
这里是回购的一个失败有: https://gitlab.com/pushrocks/npmts编辑2个月前
原来,它只是需要多个步骤:
- 禁用镜像版本库
- 按保存
- 删除的网址
- 按保存
- 然后添加远程镜像
如果不能托管自己的GitLab,这是值得了解GitLab.com已直接引入此功能,而无需任何变通。
https://yourgithubusername:yourgithubpassword@github.com/agaric/guts_discuss_resource.git
请注意,如果你从远程仓库拉,它仍然会推动在此处设置远程仓库。 我还没有尝试过,但你应该能够推到和来自同一个仓库拉。
我还创建了一个项目,通过API(API大多只创建项目使用),以反映在GitLab 6仓库。
https://github.com/sag47/gitlab-mirrors
今天的最佳选择是使用GitLab CI。 它本质上是网络挂接,它可以自动克隆你,让你的运行任意shell命令已经执行服务器:所有你需要做的就是推动。
服务是最好的选择,如果有人实现了他们:他们生活在源代码树,会做一个推,并且不需要额外的部署开销。
关键的实现难度,现在是如何存储推凭据安全:可能对GitHub上的最好的选择是一键搞定不知何故(的Oauth UI上通过服务将是完美的),并将其存储明文。
刚刚被添加另一种选择是自定义的钩子 。
public_repo
https://username@github.com/username/repo.git
Push
Password
your_token
https://github.com/username/repo.git
Pull
leave_empty
官方GitLab文档
您可以使用挂钩,以自定义运行后,一些提交的脚本。 这样,您可以发送到另一个仓库的新变化。 查找有关钩下页了解更多信息: http://git-scm.com/book/en/Customizing-Git-Git-Hooks
最好的办法是不使用后收到钩,但得到部署,通过rsync执行同步命令,使用Capistrano的 ,如果你喜欢红宝石,使用Shipit如果你喜欢使用Javascript(步兵)。
GitLab企业版现在支持库镜像为8.2版本。 有关如何配置此信息是在库镜像帮助主题 。