添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

GitLab自带镜像功能,不过本文并未使用: https://gitlab.com/help/workflow/repository_mirroring.md

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
    touch private_token
    # 粘贴private token中的内容
    

    7 创建本地仓库路径

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

    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 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

    Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服务器 yum -y install git
    如何搭建自己的中文Git版本库:Gitlab容器化部署
    我深怕自己本非美玉,故而不敢加以刻苦琢磨,却又半信自己是块美玉,故有不肯庸庸碌碌,与瓦砾为伍。于是我渐渐地脱离凡尘,疏远世人,结果便是一任愤懑与悔恨日益助长内心那怯弱的自尊心。其实任何人都是驯兽师,而那野兽,无非就是各人的性情而已。 -----中岛敦《山月记》