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
$ 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 同步所有项目