gerrit 2 升级到 3最新版本(2.16-->3.9.1)--另类方式升级

从2.16 数据库迁移到notedb 报错如下

[xxx] [Index-Batch-xxx] ERROR com.google.gerrit.index.Schema : error getting field delta of ChangeData{Change{xxx (xxx), dest=xxx, status=M}}
com.google.gwtorm.server.OrmException: org.eclipse.jgit.errors.MissingObjectException: Missing unknown xxx

发现一种另类升级办法

1.安装jdk17
# root用户安装jdk11 和 17
# 11.0.21 支持到gerrit 3.8,gerrit 3.9 得需要 17
[root@localhost ~]# cd /usr/local/java/
[root@localhost java]# wget https://mirrors.hirain.com/package/jdk/openjdk-11.0.21%2B9-linux-x64.tar.gz
[root@localhost java]# wget https://mirrors.hirain.com/package/jdk/openjdk-17.0.9%2B9-linux-x64.tar.gz
[root@localhost java]# tar xf openjdk-11.0.21+9-linux-x64.tar.gz
[root@localhost java]# tar xf openjdk-17.0.9+9-linux-x64.tar.gz
[root@localhost java]# mv openlogic-openjdk-11.0.21+9-linux-x64 jdk-11.0.21
[root@localhost java]# mv openlogic-openjdk-17.0.9+9-linux-x64 jdk-17.0.9

# 配置默认的jdk版本(这一步可以不做)
[root@localhost java]# vim /etc/profile
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export JAVA_HOME=/usr/local/java/jdk-11.0.21
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin:/usr/local/git-2.9.5/bin
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib

[root@localhost java]# source /etc/profile
[root@localhost java]# java --version
openjdk 17.0.9 2023-10-17
2.安装最新版本的gerrit3.9.1
新建一个有家目录的gerrit用户,切换到这个用户然后执行
java -jar gerrit-3.9.1.war init -d /home/gerrit/gerrit391
#安装配置略
3.旧迁移合并数据库
# 这一步可以不做! 不做最后升级完成的gerrit,看不到change,但是项目都还在的,大概语句参考如下:!!!!忽略所有报错!!!!
[gerrit@localhost ~]$ /usr/local/java/jdk1.8.0_202/bin/java -jar gerrit2.16.17_site/bin/gerrit.war migrate-to-note-db --threads 10 -d gerrit2.16.17_site --reindex false  2>&1 | tee ./migrate-to-notedb.txt
[gerrit@localhost ~]$ /usr/local/java/jdk1.8.0_202/bin/java -jar /home/gerrit/gerrit2.16.17_site/bin/gerrit.war reindex -d gerrit2.16.17_site --threads 10  2>&1 | tee reindex-to-2.16.28-migrate.txt

4.将旧gerrit git 下的 All 开头项目 覆盖到新的gerrit git目录下
# 新版本的gerrit起来之后,git目录下只有两个项目All开头的!,从旧gerrit2.16上把git目录下的两个All开头的项目用cp覆盖过来,注意是覆盖!直接删除用旧的会报错!
# 如果你做了第三步迁移数据库到notedb,那你还得把数据库的东西移到新的,由于我不需要change,没做第三步,这里就不做了
5.重新初始化安装新gerrit
# 覆盖完之后重新执行初始化
java -jar gerrit-3.9.1.war init -d /home/gerrit/gerrit391
6.其他项目的迁移
你只需要把其他项目移动到新的git目录下就好了,重启gerrit,或者重新 init gerrit,就ok
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值