gerrit代码审核工具之“error unpack failed error Missing unknown”错误解决思路

使用gerrit代码审核工具时遇到error: unpack failed: error Missing unknown d6d7c89bd1d77f44c5c8e99437aaffbfc0684e72 fatal: Unpack error, check server log To ssh://192.168.10.201:29418/MainWeb ! [remote rejected] HEAD -> refs/for/test (n/a (unpacker error)) error: failed to push some refs to 'ssh://admin@192.168.10.201:29418/MainWeb'
问题应该如何解决

  • 在网上查阅资料,发现有一个共同点就是数据库里面有提示的这些对象,但是git仓库里面找不到对应的对象名所以报错了
  • 至于出现这样的现象可能是因为上次杋器意外掉电,导致仓库出现了问题
  • 解决思路,既然是数据库中的多余了,删了是否可靠,觉得可以试试看,因为我们数据库每天都有备份的
  • 错误提示如下
➜  MainWeb git:(test) git push --no-thin origin HEAD:refs/for/test
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 645 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
error: unpack failed: error Missing unknown d6d7c89bd1d77f44c5c8e99437aaffbfc0684e72
fatal: Unpack error, check server log
To ssh://192.168.10.201:29418/MainWeb
 ! [remote rejected]   HEAD -> refs/for/test (n/a (unpacker error))
error: failed to push some refs to 'ssh://admin@192.168.10.201:29418/MainWeb'
  • 操作步骤
  • 提交代码时出现了这个错误,注意关键地方,其实也可以一边操作一边查看后台日志
    //这里‘error Missing unknown d6d7c89bd1d77f44c5c8e99437aaffbfc0684e72’后面跟的那一串字符,对应数据库中gerrit_db.patch_sets表中的revision字段,
# git push --no-thin origin HEAD:refs/for/test
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 645 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
error: unpack failed: error Missing unknown d6d7c89bd1d77f44c5c8e99437aaffbfc0684e72
fatal: Unpack error, check server log
To ssh://192.168.10.201:29418/MainWeb
 ! [remote rejected]   HEAD -> refs/for/test (n/a (unpacker error))
error: failed to push some refs to 'ssh://admin@192.168.10.201:29418/MainWeb'
  • 通过revision可以查到涉及到这个对象的change_id,如下
mysql> select * from patch_sets where revision = 'd6d7c89bd1d77f44c5c8e99437aaffbfc0684e72'G
*************************** 1. row ***************************
           revision: d6d7c89bd1d77f44c5c8e99437aaffbfc0684e72
uploader_account_id: 1
         created_on: 2017-01-11 20:47:46
              draft: Y
          change_id: 1176
       patch_set_id: 1
1 row in set (0.00 sec)
  • 通过change_id可以查到changes相关的数据
mysql> select * from changes where change_id = 1176 G
*************************** 1. row ***************************
          change_key: I2c68f2b32537908e55eb19472dea5a418d26b187
          created_on: 2017-01-11 20:47:46
     last_updated_on: 2017-01-11 20:47:46
    owner_account_id: 1
   dest_project_name: MainWeb
    dest_branch_name: refs/meta/config
              status: A
current_patch_set_id: 1
             subject: Edit Project Config
               topic: NULL
    original_subject: Edit Project Config
         row_version: 1
           change_id: 1176
1 row in set (0.00 sec)
  • 好了,可以尝试先将这两条记录删掉,看看报什么错
mysql> delete from changes where change_id = 1176 ; 
Query OK, 1 row affected (0.00 sec)

mysql> select * from changes where change_id = 1176 G
Empty set (0.00 sec)

mysql> select * from patch_sets where revision = 'd6d7c89bd1d77f44c5c8e99437aaffbfc0684e72'G
*************************** 1. row ***************************
           revision: d6d7c89bd1d77f44c5c8e99437aaffbfc0684e72
uploader_account_id: 1
         created_on: 2017-01-11 20:47:46
              draft: Y
          change_id: 1176
       patch_set_id: 1
1 row in set (0.00 sec)

mysql> delete from patch_sets where revision = 'd6d7c89bd1d77f44c5c8e99437aaffbfc0684e72';
Query OK, 1 row affected (0.01 sec)

mysql> select * from patch_sets where revision = 'd6d7c89bd1d77f44c5c8e99437aaffbfc0684e72'G
Empty set (0.00 sec)

mysql> select * from patch_sets where change_id =  1176;
Empty set (0.00 sec)
  • 再提交,看看是否还会报错
➜  MainWeb git:(test) git push --no-thin origin HEAD:refs/for/test
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 645 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
error: unpack failed: error Missing unknown d3b7b1a1b0f1250f7115a1173f7137aae5a0c9aa
fatal: Unpack error, check server log
To ssh://192.168.10.201:29418/MainWeb
 ! [remote rejected]   HEAD -> refs/for/test (n/a (unpacker error))
error: failed to push some refs to 'ssh://admin@192.168.10.201:29418/MainWeb'
  • 额,看来还是类似的错误,那我就都删了再看看,操作完看是否可以正常工作了admin账号

  • 还是预期的那样,把库的多余的东西删掉之后就可以正常推送了,push 到远程仓库

  • 多备份下数据库还是有必要的,万一刚刚的操作出问题之后,最起码还是有后悔药的。嘿嘿

➜  MainWeb git:(test) git status 
On branch test
Your branch is ahead of 'origin/test' by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean
➜  MainWeb git:(test) git push origin                             
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: closed: 1, refs: 1, done    
To ssh://192.168.10.201:29418/MainWeb
   4017e4bf..dae0d97d  test -> test
原文地址:https://www.cnblogs.com/ZhangRuoXu/p/6483307.html