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

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

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

2. 配置
2.1 创建系统用户并生成key

# useradd svnmirror
# su - svnmirror
$ ssh-keygen

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

创建group:mirrors_svn

创建用户:svnmirror

2.3 gitmirrors运行的环境

yum install python-pip
pip install python-gitlab
yum install git-svn

2.4 拉取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

2.5 修改配置

$ cat config.sh | grep -v ^#
system_user="svnmirror"                    #运行gitmirror的系统用户
user_home="/home/${system_user}"
repo_dir="${user_home}/repositories"
enable_colors=true
git_svn_additional_options="-s"            #如果svn的库不是按照标准格式建立的,这里要清空
no_create_set=false
no_remote_set=false
force_update=false
prune_mirrors=false

gitlab_namespace="mirrors_svn"            #gitlab上的group名称
gitlab_url="http://gitlab.xxx.com"         #gitlab地址
gitlab_user="svnmirror"                    #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

2.5 在gitlab找到用户的Personal Access Tokens写入配置

settings->Access Token->Personal Access Tokens

$ cat xxxxxxxxxx >> ~/private_token

3. 同步项目
3.1 将系统用户的公钥存入github和gitlab,用于验证

用户设置 -> SSH Keys

3.2 svn转换用户文件gitsvn_authors.txt

svn作者 = git Username <邮箱地址>

3.3 获取svn用户信息

svn log --xml | grep "^<author" | sort -u | \awk -F '<author>' '{print $2}' | awk -F '</author>' '{print $1}' > userinfo.txt

3.4 操作开始

#添加项目
$ ./add_mirror.sh --git --project-name test --mirror git@github.com:evan-git/test.git--project-name #为gitlab建立的mirros项目名称

#svn项目
$ ./add_mirror.sh --svn --project-name pivas --mirror https://192.168.31.66/svn/PIVAS --authors-file ./gitsvn_authors.txt

#手动同步代码
$ ./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 同步所有项目

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部