Столкнулся с неприятной проблемой при работе с Git, к сожалению все попытки найти решение самостоятельно или в Google успехом не увенчались, надеюсь на помощь коллективного хабраразума.
Ситуация выглядит следующим образом:
Есть сервер (Linux Debian), на нем установлен Git 1.7.2 (последняя версия из stable ветки debian'а) и gitolite 3. Также на этом сервере поднят Apache/PHP/MySQL для развертывания тестовых версий сайтов, разработка которых ведется под Windows.
На сервере под усправлением Gitolite находятся два репозитария. С клонированием одного из них проблем не возникает, лог клонирования репозитария (имена домена и репозитария изменены, но это к делу отношения не имеет):
Linux Debian x64, Git 1.7.2.5 git clone git@example.com:project2
Cloning into project2...
remote: Counting objects: 3760, done.
remote: Compressing objects: 100% (3137/3137), done.
Receiving objects: 100% (3760/3760), 303.88 MiB | 13.81 MiB/s, done.
Resolving deltas: 100% (537/537), done.
remote: Total 3760 (delta 537), reused 3694 (delta 513)
error: refs/remotes/origin/master does not point to a valid object!
error: Trying to write ref refs/heads/master with nonexistant object 37f88348b734c899a7ca837dab947d69a8177a94
fatal: Cannot update the ref 'HEAD'.
Я выделил цифры чтобы было заметно что они отличаются. Вопрос — как такое может быть? Навскидку разница между командами в операционной системе, минорной версии Git и пользователе, чей ключ используется для авторизации. Но при тех же отличиях первый репозитарий нормально клонируется.
Проблема началась после того как вчера при попытке pull'а на сервере (а он производится автоматически через hook в Gitolite) произошел конфликт. Но, опять же, это вряд ли должно было повлиять на клонирование, тем более что для удаленного Windows клиента клонирование проходит нормально.
Кто-нибудь может указать направление в котором мне стоит копать чтобы решить данную проблему?
The `refs/for/refs` path is non-standard and confuses old Git clients. AFAIK, these references are created by Gerrit. I've manually removed those two references, and clones should work again, but if you continue using Gerrit, the problem will persist. The only workaround is updating your version of Git to the bleeding edge.