# dc_gerrit_rte **Repository Path**: jllim/dc_gerrit_rte ## Basic Information - **Project Name**: dc_gerrit_rte - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-29 - **Last Updated**: 2026-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gerrit项目迁移 - 文档编号 `KBA.260329.1024.1` - 文档履历 | 版本 | 发布 | 修订人 | 概要说明 | | --------- | ---- | ------ | ------------------------------------- | | v1-260329 | 内部 | JLTech | 首稿,介绍gerrit主机更换后迁移git项目 | ## 背景 - windows 10系统上存在系统保留字,向gerrit提交评审代码时,如果文件名或路径存在保留字,或者.git中关联到保留字,会导致gerrit内部错误并无法提交成功 ## 需求 - gerrit 3.10从windows 10系统迁移到ubuntu系统 ## 限制 - 仅限于同个gerrit版本的不同操作系统之间迁移 - 不同gerrit版本,迁移存在较大依赖因素,本文档不完全适用 ## 解决方案 ### 前置条件 - gerrit版本一致 - 本方案分别在windows 10和ubuntu上搭建gerrit 3.10.0系统 - gerrit的数据库使用默认的配置,即位于db目录下的h2数据库 - 新gerrit搭建 - ubuntu主机,安装好docker环境 - 拉取 registry.cn-hangzhou.aliyuncs.com/jlcode/gerrit:3.10 ```bash docker pull registry.cn-hangzhou.aliyuncs.com/jlcode/gerrit:3.10 ``` - 克隆gerrit服务运行实例管理工具dc_gerrit_rte ```bash git clone https://gitee.com/jllim/dc_gerrit_rte.git /opt/gerrit ``` - 确保主机的mac地址列表中至少有一个与macaddr.sig匹配 - dc/macaddr.sig文件由gerrit集成商家提供 - 提供主机的mac地址给gerrit集成商家 - gerrit集成商家生成并提供macaddr.sig文件 - 将macaddr.sig放到dc/目录下 - 安装并生成gerrit站点 - 运行安装命令,不要乱按回车,等待出现下个交互提示 ```bash \> # cd /opt/gerrit \> # ./install.sh ... ``` - 当出现如下交互提示,按要求操作 ```bash -------- Please login the first account named gerritadmin with password is 123 Add the followwing sshkey pub data to gerritadmin account sshkey: -------- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5****ILldYuy5AT1fiM591Qpqw7QNEcVf5ga********bzN31 gerritadmin -------- approver1 should login with password maybe is approver1 developer1 should login with password maybe is developer1 -------- ``` - 复制ssh-ed25519这行的sshkey数据 - 假设本主机的ip地址为 192.168.100.212 - 打开浏览器地址 `http://192.168.100.212:10240/code` - 必须使用gerritadmin作为首个登录,密码 123,它将作为管理员角色 - 登录成功后,在页面右上角的gerritadmin配置菜单进入sshkey配置页面,添加sshkey数据 - 退出gerritadmin登录 - 先后使用approver1和developer1登录,密码分别是approver1和developer1 - 完成上述操作后,回到命令行窗口,直接回车继续往下安装 - 询问邮件发送的配置,是否使用默认的配置或人工输入 - 建议按自己的实际参数去人工配置,需直接回车进入人工配置 - 整个安装没有报错即安装完成,安装完成将生成 dc/dc_gerrit文件夹,目录结构如下 ```wiki dc/dc_gerrit/ doc/ gerrit/ cache/ data/ db/ etc/ git/ hooks/ index/ logs/ patch/ plugins/ keycloak/ ``` - gerrit的关键账号 - 新gerrit(ubuntu 22.04)的管理员账号是 gerritadmin - 旧gerrit(windows 10)的管理员账号是 linjl - 需要增加新账号gerritadmin并拉入administrators组 ### 开始迁移 - 停止新gerrit ```bash \> # cd /opt/gerrit/ \> # ./stop.sh ``` - 拷贝旧gerrit站点下的git,db文件夹到新gerrit站点下并覆盖git,db文件夹 - 将旧gerrit中的serverId值复制给新gerrit使用 ```wiki @etc/gerrit.config [gerrit] ... serverId = ff889406-596f-47ae-a7bb-c259118c6b64 ``` - 在新gerrit执行重新建立索引,日志中没有出错,表白已成功建立索引 ```bash \> # ./reindex.sh ... Collecting accounts: 19 Reindexing accounts: 100% (19/19) Reindexed 19 documents in accounts index in 3.0s (6.3/s) Index accounts in version 14 is ready Reindexing groups: 100% (18/18) Reindexed 18 documents in groups index in 2.2s (8.1/s) Index groups in version 11 is ready [2026-03-29 10:22:28,961] [main] INFO com.google.gerrit.server.git.MultiProgressMonitor : Reindexing changes: Slicing projects: 9% (2/22) [CONTEXT ratelimit_period="1 MINUTES" ] Reindexing changes: changes: 100% (117/117), project-slices: 100% (5/5), Slicing projects: 100% (22/22) Reindexing changes: changes: 100% (117/117), project-slices: 100% (5/5), Slicing projects: 100% (22/22), done Reindexed 117 documents in changes index in 17.4s (6.7/s) Index changes in version 86 is ready Reindexing projects: 100% (22/22) Reindexed 22 documents in projects index in 0.0s (1100.0/s) Index projects in version 9 is ready ... ``` - 启动新gerrit ```bash \> # ./start.sh ``` - 登录新gerrit - 浏览器打开地址 `http://YourGerritHostIP:10240/code` - 以管理员账号gerritadmin账号登录 - 查看页面主菜单下的CHANGES的Open列表,Merged列表 - 查看页面主菜单下的BROWSE的Repositories列表中各个仓库的BROWSE - 确认仓库的git提交历史是否完整