Gitlab存储库镜像

gon*_*opp 53 git version-control mirroring gitlab

是否有可能让gitlab设置自动同步(镜像)在另一个位置托管的存储库?

目前,我知道这样做最简单的方法是手动推送到两个(gitlab和另一个)存储库,但这很费时且容易出错.

最大的问题是镜像可以重新同步是两个用户同时将更改推送到两个不同的存储库.我可以提出的防止此问题的最佳方法是确保用户只能推送到其中一个存储库.

Von*_*onC 19

2016年12月更新:使用GitLAb EE 8.2+支持镜像:请参阅" 存储库镜像 ".

正如Xiaodong Qi所评论的那样:

无需使用任何命令行即可简化此答案(只需在Gitlab repo管理界面上进行设置)


原始答案(2013年1月)

如果您的远程镜像仓库是一个仓库,那么您可以在gitlab管理的仓库中添加一个post-receive挂钩,并将其推送到您的远程仓库中.

#!/bin/bash
git push --mirror slave_user@mirror.host:/path/to/repo.git
Run Code Online (Sandbox Code Playgroud)

正如Gitolite(由Gitlab使用)提到:

如果要仅在几个特定存储库中安装挂钩,请直接在服务器上执行.

将在:

~git/repositories/yourRepo.git/hook/post-receive
Run Code Online (Sandbox Code Playgroud)

警告(更新Ocotober 2014)

西罗桑蒂利指出的评论:

今天(2014年第四季度),这将失败,因为GitLab会自动 github.com/gitlabhq/gitlab-shell/tree/...符号链接到它管理的每个存储库中.
因此,如果您进行此更改,您修改的每个存储库都将尝试推送.
更不用说升级时可能发生的冲突gitlab-shell了,当前脚本是ruby脚本,而不是bash(你不应该删除它!).

你可以通过读取当前目录名称并确保它与遥控器之间的双射来纠正这个问题,但我建议人们远离那些东西

有关反馈的信息,请参阅(并投票支持)" 推送到GitLab Repo后自动推送到远程镜像回购 ".


2016年7月更新:我看到为GitLab EE(企业版)增加了这种功能:MR 249

  • 添加在镜像存储库设置下输入远程推送URL的功能
  • 添加实现代码以推送到远程存储库
  • 添加新的后台工作者
  • 显示最新更新日期和同步错误(如果存在).
  • 每小时同步远程镜像.

请注意,最近Remote Mirror Repository(问题17940)可能很棘手:

我目前正试图将我公司Lossless GmbH(https://www.npmjs.com/~lossless)的开源npm模块的主要开发从GitHub.com转移到GitLab.com

我正在从GitHub导入所有repos,但是当我尝试关闭Mirror RepositoryRemote Mirror Repository使用原始GitHub URL 打开时,我收到一条错误消息:

Remote mirrors url is already in use
Run Code Online (Sandbox Code Playgroud)

这是其中一个失败的回购:https://gitlab.com/pushrocks/npmts 编辑于2个月之前

事实证明,它只需要多个步骤:

  • 禁用镜像存储库
  • 按保存
  • 删除URl
  • 按保存
  • 然后添加远程镜像

  • @jfrantzius后者:你的提交仍然会被推送到你的GitLab仓库,但不会转发给奴隶. (2认同)

mln*_*ncn 9

如果没有托管你自己的GitLab,值得知道GitLab.com直接引入了这个功能,没有任何解决方法.

  1. 在项目中使用齿轮图标选择Mirror Repository
  2. 向下滚动到Push to a remote repository
  3. 选中标记远程镜像存储库:每小时自动更新远程镜像的分支,标记和提交.
  4. 输入要更新的存储库; 对于GitHub,至少可以在URL中包含您的用户名和密码,如下所示:https://yourgithubusername:yourgithubpassword@github.com/agaric/guts_discuss_resource.git

请注意,如果您从远程存储库中提取,它仍将继续到此处设置的远程存储库.我没有尝试过,但你应该能够从同一个存储库推送和拉出.


Bre*_*ith 7

使用 GitLab 和 GitHub配置镜像存储库的快速摘要


  1. GitHub : 设置 > 开发人员设置 > 个人访问令牌
    • 您需要启用: public_repo
  2. GitLab:GitLab 项目 > 设置 > 存储库 > 镜像存储库


  • Git 存储库网址https://username@github.com/username/repo.git
  • 镜像方向Push
  • 认证方式Password
    • 密码:your_github_token


  • Git 存储库网址https://github.com/username/repo.git
  • 镜像方向Pull
  • 认证方式leave_empty


官方 GitLab 文档