Отсутствующее дерево и ошибки «дубликат запроса» при нажатии на gerrit

Когда я пытаюсь нажать на gerrit, я получаю эту ошибку:

Counting objects: 1276, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (918/918), done.
Writing objects: 100% (1276/1276), 235.23 KiB | 0 bytes/s, done.
Total 1276 (delta 960), reused 381 (delta 262)
remote: Resolving deltas: 100% (960/960)
remote: Counting objects: 14637, done
fatal: Unpack error, check server log
error: unpack failed: error Missing tree a072ac238de0ba6d02359a4756418011f5ea7ad5
To ssh://someserver
 ! [remote rejected] branch1 -> refs/for/branch1 (n/a (unpacker error))
 ! [remote rejected] branch2 -> refs/for/branch2 (n/a (unpacker error))
 ! [remote rejected] branch3 -> refs/for/branch3 (n/a (unpacker error))
 ! [remote rejected] branch4 -> refs/for/branch4 (n/a (unpacker error))
 ! [remote rejected] branch5 -> refs/for/branch5 (n/a (unpacker error))
 ! [remote rejected] branch6 -> refs/for/branch6 (n/a (unpacker error))
error: failed to push some refs to 'ssh://someserver'

В этом вопросе упоминается использование git push --no-thin, но это также возвращает ошибку:

Counting objects: 1276, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (991/991), done.
Writing objects: 100% (1276/1276), 741.02 KiB | 0 bytes/s, done.
Total 1276 (delta 780), reused 330 (delta 189)
remote: Resolving deltas: 100% (780/780)
remote: Counting objects: 684, done
remote: Processing changes: refs: 6, done
To ssh://someserver/ProjectName
 ! [remote rejected] branch1 -> refs/for/branch1 (no new changes)
 ! [remote rejected] branch2 -> refs/for/branch2 (duplicate request)
 ! [remote rejected] branch3 -> refs/for/branch3 (duplicate request)
 ! [remote rejected] branch4 -> refs/for/branch4 (duplicate request)
 ! [remote rejected] branch5 -> refs/for/branch5 (duplicate request)
 ! [remote rejected] branch6 -> refs/for/branch6 (duplicate request)
error: failed to push some refs to 'ssh://someserver'

У меня есть большая куча коммитов, которые мне нужно загрузить.

Ни одно из решений в связанном вопросе не помогло. Что я должен делать? Что означает хэш после ошибки отсутствия дерева?


person Tomáš Zato - Reinstate Monica    schedule 01.08.2017    source источник
comment
Однажды я попробовал решение, не упомянутое в связанном вопросе, но это решение не всегда работает. В местном где-то еще, git init temp;cd temp;git fetch <path-to-the-local-existing-repo> <branch>;git push ssh://someserver/ProjectName <branch>:refs/for/<branch>.   -  person ElpieKay    schedule 01.08.2017
comment
Возможно (вероятно?), что gerrit (неверно?) использует неглубокие клоны. Если это так, то правильным решением, вероятно, будет удаление клона на gerrit-сервере — он так и остался в непригодном для использования состоянии.   -  person torek    schedule 01.08.2017
comment
@torek Я не совсем понимаю, что ты имеешь в виду...   -  person Tomáš Zato - Reinstate Monica    schedule 02.08.2017
comment
Неглубокие клоны намеренно пропускают некоторые объекты. В Git есть специальный код для работы с поверхностными клонами, но если вы злоупотребите этим кодом (существуют различные ограничения на то, что вы можете делать с поверхностными клонами), вы получите сломанный клон, с которым Git больше не сможет справиться. с участием. Я не использую Gerrit, но я видел кое-что об этом, используя неглубокие клоны.   -  person torek    schedule 02.08.2017