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

相关推荐

  1. 升级openssl3.X版本

    2024-02-02 19:24:02       55 阅读
  2. SpringBoot2升级SpringBoot3总结

    2024-02-02 19:24:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-02 19:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-02 19:24:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-02 19:24:02       82 阅读
  4. Python语言-面向对象

    2024-02-02 19:24:02       91 阅读

热门阅读

  1. vscode git stash apply stash@{1}不生效

    2024-02-02 19:24:02       36 阅读
  2. 代码随想录算法训练营29期Day37|LeetCode 738,968

    2024-02-02 19:24:02       61 阅读
  3. android 11 自定义Android device owner 接口

    2024-02-02 19:24:02       46 阅读
  4. AcWing--因数平方和-->数论,整数分块

    2024-02-02 19:24:02       61 阅读
  5. [ComfyUI进阶教程] animatediff视频提示词书写要点

    2024-02-02 19:24:02       62 阅读
  6. 【从浅到深的算法技巧】优先队列

    2024-02-02 19:24:02       47 阅读
  7. 慢充话费,慢充Q币细节曝光

    2024-02-02 19:24:02       51 阅读
  8. 2024美赛数学建模所有题目思路分析

    2024-02-02 19:24:02       45 阅读