Задать вопрос

Проблема с клонированием Git репозитария

Столкнулся с неприятной проблемой при работе с Git, к сожалению все попытки найти решение самостоятельно или в Google успехом не увенчались, надеюсь на помощь коллективного хабраразума.

Ситуация выглядит следующим образом:

Есть сервер (Linux Debian), на нем установлен Git 1.7.2 (последняя версия из stable ветки debian'а) и gitolite 3. Также на этом сервере поднят Apache/PHP/MySQL для развертывания тестовых версий сайтов, разработка которых ведется под Windows.

На сервере под усправлением Gitolite находятся два репозитария. С клонированием одного из них проблем не возникает, лог клонирования репозитария (имена домена и репозитария изменены, но это к делу отношения не имеет):

Windows 7, Git 1.7.10
git clone git@example.com:project1
Cloning into 'project1'...
remote: Counting objects: 4240, done.
remote: Compressing objects: 100% (3301/3301), done.
remote: Total 4240 (delta 970), reused 4153 (delta 911)
Receiving objects: 100% (4240/4240), 4.96 MiB | 181 KiB/s, done.
Resolving deltas: 100% (970/970), done.

Linux Debian x64, Git 1.7.2.5
git clone git@example.com:project1
Cloning into project1...
remote: Counting objects: 4240, done.
remote: Compressing objects: 100% (3301/3301), done.
remote: Total 4240 (delta 970), reused 4153 (delta 911)
Receiving objects: 100% (4240/4240), 4.96 MiB, done.
Resolving deltas: 100% (970/970), done.


Со вторым проектом со вчерашнего дня творятся странности:

Windows 7, Git 1.7.10
git clone git@example.com:project2
Cloning into 'project2'...
remote: Counting objects: 4084, done.
remote: Compressing objects: 100% (3213/3213), done.
remote: Total 4084 (delta 747), reused 4002 (delta 710)
Receiving objects: 100% (4084/4084), 303.93 MiB | 168 KiB/s, done.
Resolving deltas: 100% (747/747), done.

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 клиента клонирование проходит нормально.

Кто-нибудь может указать направление в котором мне стоит копать чтобы решить данную проблему?
  • Вопрос задан
  • 5967 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
nicolnx
@nicolnx
Буквально на днях столкнулись с аналогичной проблемой на github. Саппорт ответил:

I've just found the problem. Some external program has created two references in a non-standard reference path for your repository:

9bebfe5719bba5dc39b27f9fdfb872b4f56c1029 refs/for/refs/heads/dev
c165d9c5adea628a67c1ede7aca6232aee53e86c refs/for/refs/heads/master

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.

Обновили клиенты до 1.7.10 и проблема ушла.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sdevalex
@sdevalex
Если не важна история, то просто пересоздайте репозиторий. Там может куча разный проблем и куча решений.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы