git unpack error问题

来源:互联网 发布:男士鞋子搭配 知乎 编辑:程序博客网 时间:2024/06/10 06:14
转载自:http://www.cnblogs.com/yuxc/p/3508964.html

解决Gerrit的git unpack error问题


有同事将代码提交到gerrit后,没有合并到代码库中。此时,由于版本问题将gerrit服务器上的git删除并重新上传。此后所有人都无法提交代码,报error: unpack failed: error Missing unknownf9be6c4dd1faa605802e5d586e57d848628b4214

解决方法:到gerrit数据库中删除本次提交记录。步骤:

1、连接gerrit数据库:ssh -p 29418 git@host-ip gerrit gsql

2、根据f9be6c4dd1faa605802e5d586e57d848628b4214(commit_id)在patch_sets表中找到其change_id:

gerrit> select * from patch_sets where revision='5bb8a82e4fc616a7ab42b664492802da75625e7b';
 REVISION                                 | UPLOADER_ACCOUNT_ID | CREATED_ON              | DRAFT | CHANGE_ID | PATCH_SET_ID
 -----------------------------------------+---------------------+-------------------------+-------+-----------+-------------
 5bb8a82e4fc616a7ab42b664492802da75625e7b | 1000275             | 2014-06-23 11:05:35.798 | N     | 4013      | 1
(1 row; 1 ms)


3、根据change_id在changes表中找到该次提交:

gerrit> select * from changes where change_id=4013;
 CHANGE_KEY                                | CREATED_ON              | LAST_UPDATED_ON       | SORT_KEY         | OWNER_ACCOUNT_ID | DEST_PROJECT_NAME                    | DEST_BRANCH_NAME  | OPEN | STATUS | NBR_PATCH_SETS | CURRENT_PATCH_SET_ID | SUBJECT                   | TOPIC | LAST_SHA1_MERGE_TESTED | MERGEABLE | ROW_VERSION | CHANGE_ID
 ------------------------------------------+-------------------------+-----------------------+------------------+------------------+--------------------------------------+-------------------+------+--------+----------------+----------------------+---------------------------+-------+------------------------+-----------+-------------+----------
 Ifdee0776a87f1d784fdc63574ad1166b388e4953 | 2014-06-23 11:05:35.798 | 2014-06-23 11:05:35.8 | 002df29900000fad | 1000275          | Source/bootable | refs/heads/master | Y    | n      | 1              | 1                    | Bug_ID:null Resolvent:led | NULL  | NULL                   | N         | 1           | 4013
(1 row; 0 ms)


4、将其关闭,并把状态置为Abandon。

gerrit> update changes set open='N',status='A' where change_id=4013;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

0 0