使用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