使用gitlab-mirrors从其它版本库同步代码

96
真徐小白
2016.01.15 13:47* 字数 249

gitlab是一个可以自己搭建维护的git服务器,已经有很多公司开始使用。gitlab-mirrors是github上开源的项目,用于实现gitlab从其它版本库同步代码,如:Bazaar, Git, Mercurial, Subversion.

1. 概述

  • 创建系统用户用于gitmirror
  • 在gitlab建立用户并赋予admin权限
  • 用新建的用户登录gitlab并建立用于存放同步代码的group
  • 安装gitmirror
  • 更改gitmirror配置文件
  • 创建计划任务用于定时同步代码

2. 配置

创建系统用户并生成key

# useradd gitmirror
# su - girmirros
$ ssh-keygen

登录gitlab创建用户并赋予admin权限

如 root

创建group

如 mirrors_github

拉取gitmirrors代码

# su - gitmirror
$ mkdir repositories
$ touch private_token
$ git clone https://github.com/samrocketman/gitlab-mirrors.git
$ cd gitlab-mirrors
$ chmod 755 *.sh
$ cp config.sh.SAMPLE config.sh

修改配置

$ cat config.sh | grep -v ^#
system_user="gitmirror"                    #运行gitmirror的系统用户
user_home="/home/${system_user}"
repo_dir="${user_home}/repositories"
enable_colors=true
git_svn_additional_options="-s"
no_create_set=false
no_remote_set=false
force_update=false
prune_mirrors=false

gitlab_namespace="mirrors_github"          #gitlab上的group名称
gitlab_url="http://gitlab.xxx.com"         #gitlab地址
gitlab_user="root"                         #gitlab用户
gitlab_user_token_secret="$(head -n1 "${user_home}/private_token" 2> /dev/null || echo "")"
ssl_verify=true
http_remote=false

issues_enabled=false
wall_enabled=false
wiki_enabled=false
snippets_enabled=false
merge_requests_enabled=false
public=false

在gitlab找到用户的Private token写入配置

Profile Settings > Account

Paste_Image.png
$ cat xxxxxxxxxx  >> ~/private_token

3. 同步项目

将系统用户的公钥存入github和gitlab,用于验证

就不写了

添加项目

$ ./add_mirror.sh --git --project-name test --mirror git@github.com:evan-git/test.git

--project-name 为gitlab建立的mirros项目名称

手动同步代码

$ ./git-mirrors.sh

通过计划任务定期同步代码

$ crontab -e
@hourly /home/gitmirror/gitlab-mirrors/git-mirrors.sh

其它命令

$ ./ls-mirrors.sh                                          列出以添加的项目
$ ./delete_mirror.sh --delete someproject                  删除项目
$ ./update_mirror.sh project_name                          单独同步某个项目
$ ./git-mirrors.sh                                         同步所有项目
Git
Web note ad 1