Gerrit同步至GitLab时All-Projects等内置项目同步配置问题
调整后的完整replication.config配置
[gerrit] autoReload = true replicateOnStartup = true [remote "GitLab-All-Projects"] projects = All-Projects projects = All-Users url = gitlab@gitlab.local:external-tools/gerrit-${name}.git push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/* threads = 3 mirror = true [remote "GitLab"] projects = ^(?!All-Projects|All-Users).* url = gitlab@gitlab.local:${name}.git push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/* threads = 3
修改说明
- 针对
GitLab-All-Projects节点的调整:- 新增
projects = All-Users配置项,让该节点同时覆盖All-Projects、All-Users两个内置项目 - 将固定URL改为变量格式
gitlab@gitlab.local:external-tools/gerrit-${name}.git,自动匹配两个内置项目对应的GitLab仓库路径,无需单独为每个内置项目创建独立remote节点
- 新增
- 针对
GitLab节点的调整:
新增projects = ^(?!All-Projects|All-Users).*正则过滤规则,通过负向预查逻辑排除两个内置项目,只有普通业务项目才会走该节点的同步逻辑,不会再生成错误的根路径同步任务
生效验证步骤
配置修改保存后,先清理之前遗留的错误pending同步任务:ssh -p 29418 user@gerrit.local replication cancel All-Projects All-Users
触发全量同步验证:ssh -p 29418 user@gerrit.local replication start --all
查看replication_log即可看到两个内置项目会走external-tools前缀的路径同步,不会再出现多余的根路径仓库创建报错。
内容的提问来源于stack exchange,提问作者Maciej Szymonowicz
相关产品推荐
相关产品推荐

