首先说明一点的是,我这里使用的是gerrit的docker镜像。如果你是自己安装的,可能部分路径位置需要做一些改变。
1、github项目导入到gerrit
备注:从github到gerrit,我这里的需求只是导入,并没有实时同步。
在github创建一个repo,例如replication-demo
git clone git@github.com:liheyuan/replication-demo.git
在gerrit创建一个项目,注意保持同样的名字(非比选)和空提交。
执行下一步前,确保你是gerrit的Admin
git push ssh://lihy@gerrit.coder4.com:29418/replication-demo
删除之前旧提交,从gerrit来clone
git clone ssh://lihy@gerrit.coder4.com:29418/replication-demo
2、gerrit同步到github
首先安装一个Core插件replication
ssh -p 29418 lihy@gerrit.coder4.com gerrit plugin install 'jar:file:/var/gerrit/review_site/bin/gerrit.war!/WEB-INF/plugins/replication.jar'
配置插件
cat gerrit/etc/replication.config [remote "github_replication"] url = git@github.com:liheyuan/${name}.git push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/* timeout = 30 threads = 3 remoteNameStyle = dash authGroup = GitHub Replication
配置github的key和config,注意这个路径,是$GERRIT_HOME,不是review_site
/var/gerrit/.ssh # ls -alh total 24 drwxr-xr-x 2 gerrit2 gerrit2 4.0K Nov 2 06:39 . drwxr-sr-x 5 gerrit2 gerrit2 4.0K Nov 2 07:54 .. -rwxr-xr-x 1 gerrit2 gerrit2 133 Nov 2 07:57 config -rwxr-xr-x 1 gerrit2 gerrit2 1.6K Nov 2 04:20 id_rsa -rwxr-xr-x 1 gerrit2 gerrit2 399 Nov 2 04:20 id_rsa.pub -rwxr-xr-x 1 gerrit2 gerrit2 407 Nov 2 06:39 known_hosts
/var/gerrit/.ssh # cat ./config Host github.com User git IdentityFile /var/gerrit/.ssh/id_rsa StrictHostKeyChecking no UserKnownHostsFile /dev/null
在gerrit的repo上执行个提交操作,并通过review
新建组并配置在要同步的项目中配置
Group Name: GitHub Replication # 在需要同步的项目中单独配置 GitHub Replication denied read to refs/* in all projects GitHub Replication allowed read to refs/* in in Project compliance/tests
最后一步,进行同步
ssh -p 29418 lihy@gerrit.coder4.com gerrit plugin reload replication ssh -p 29418 lihy@gerrit.coder4.com replication start --wait --all
如果没反映,可以查看错误日志:/var/gerrit/review_site/logs/replication_log