使用GitLab Mirrors同步Git仓库

简介: 笔者需实现多个Git仓库数据的同步,大致是从一个远程的Git仓库同步代码到公司内部的GitLab仓库。经过调研,笔者将目光瞄准开源的GitLab Mirrors。

笔者需实现多个Git仓库数据的同步,大致是从一个远程的Git仓库同步代码到公司内部的GitLab仓库。经过调研,笔者将目光瞄准开源的GitLab Mirrors。

GitLab自带镜像功能,不过本文并未使用

GitLab Mirrors功能比较强大,可实现各种格式向Git的镜像,例如:Bazaar, Git, Mercurial, Subversion。

GitLab Mirrors的GitHub地址:https://github.com/samrocketman/gitlab-mirrors ,有兴趣的小伙伴可前往详细了解。

下面笔者将步骤记录一下。为描述方便,笔者使用如下契约:

  • 使用GitHub模拟远程Git仓库;
  • 使用GitLab模拟公司内部的Git仓库。

下面将围绕如何将一个GitHub仓库同步GitLab展开。

1 安装Git

yum install git

2 安装GitLab Mirrors所需软件

yum install python-setuptools
git clone https://github.com/alexvh/python-gitlab3.git
cd python-gitlab3
git checkout v0.5.4
python setup.py install

笔者机器上执行如上命令即可。大家如果安装python-gitlab3后,执行gitmirror依然报错,可参考该文档安装其他软件https://github.com/samrocketman/gitlab-mirrors/blob/master/docs/prerequisites.md

3 创建GitLab管理员账户并创建Group

  • 登录GitLab
  • 创建一个用户
  • 为该用户赋予管理员权限。简单起见,笔者使用root 这个GitLab的内置账户。
  • 在GitLab创建一个Group

4 创建一个系统用户,并生成SSH key

adduser gitmirror   # 创建用户gitmirror
su - gitmirror      # 切换到用户gitmirror
ssh-keygen          # 生成SSH key,一路输入Enter键即可

5 为GitLab(镜像仓库)、GitHub(原始仓库)配置免密码登录

找到~/.ssh/id_rsa.pub

more /home/gitmirror/.ssh/id_rsa.pub

将内容贴到GitLab以及GitHub,方法比较简单,登录后找到SSH key的选项,然后粘贴即可。

执行如下命令,确保SSH key添加成功

ssh -T git@github.com
ssh -T git@localhost

如配置无误,会看到xxxx Success xxxx 的文字。

6 设置private token

访问 http://localhost/profile/account (即:GitLab的账户设置地址),找到private token项,复制其中的private token值,贴到~/private_token 文件中。

su - gitmirror
cd ~
touch private_token
# 粘贴private token中的内容

7 创建本地仓库路径

GitLab Mirrors会将GitHub上的代码clone到本地,默认是~/repositories ,因此我们得创建该目录。

cd ~
mkdir repositories

8 配置GitLab Mirrors

下载gitlab-mirrors项目

git clone https://github.com/samrocketman/gitlab-mirrors.git
cd gitlab-mirrors
chmod 755 *.sh
cp config.sh.SAMPLE config.sh

修改config.sh文件,该文件中配置项非常多,主要修改的有如下几处:

# gitmirror所运行的用户
system_user="gitmirror"

# 你在gitlab上建立的group
gitlab_namespace="Mirrors"

# gitlab的地址
gitlab_url="http://localhost"

# gitlab的管理员账户
gitlab_user="root"

9 镜像仓库

  • 添加仓库同步配置:

    cd gitlab-mirrors
    ./add_mirror.sh --git --project-name test --mirror git@github.com:itmuch/test.git
    

    这样,就可以将github.com中的指定仓库,同步到GitLab中指定Group中的test 仓库中去。

  • 手动同步

    ./git-mirrors.sh
    
  • 定时同步

    @hourly /home/gitmirror/gitlab-mirrors/git-mirrors.sh
    

参考文档

github 或者gitlab 设置添加SSH, 避免每次提交重复输入用户名:http://www.cnblogs.com/wutianlong/p/5465391.html

使用gitlab-mirrors从其它版本库同步代码:http://www.jianshu.com/p/54bd32c4862b

GitLab Mirrors 官方文档:https://github.com/samrocketman/gitlab-mirrors/blob/master/docs/installation.md

本文链接: http://www.itmuch.com/work/git-repo-sync-with-gitlab-mirrors/
**版权声明: **本博客由周立创作,采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

目录
相关文章
|
5月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何将个人账号下的Git仓库转移到企业账号下
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
14天前
|
开发工具 git
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
126 68
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
|
18天前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
5月前
|
IDE 网络安全 开发工具
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
|
5月前
|
Linux 网络安全 开发工具
码农日常生活之Git & Gitlab & Gitk
本文是关于Git和GitLab的配置使用教程,包括基础设置、日常命令操作以及图形工具的使用。
70 2
|
2月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
86 2
|
3月前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
205 1
git学习三:git使用:删除仓库,删除仓库内文件
|
3月前
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
122 4
|
3月前
|
存储 开发工具 git
Git 远程仓库地址管理:添加、修改和验证
Git 远程仓库地址管理:添加、修改和验证
170 4
|
3月前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
487 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!

热门文章

最新文章