Git push случайно завершается неудачей через git-http-backend на общем ресурсе AFS - PullRequest
0 голосов
/ 19 апреля 2011

Мой репозиторий Git находится на общем ресурсе AFS. Все запущенные процессы на сервере Linux имеют права на запись на этот общий ресурс AFS, независимо от того, что это за маска файлов и каталогов.

Git обслуживается через Git Smart HTTP с Apache и git-http-backend.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь передать мастеру клиента, мне приходится повторять эту операцию 3-4 раза, пока она не заработает. На стороне сервера Apache я вижу эти ошибки:

фатально: не удалось записать объект ошибка: недостаточно прав для добавления объекта в базу данных хранилища ./objects

На стороне клиента у меня есть эта ошибка:

ошибка: не удалось распаковать: аварийный выход из распакованного объекта

Что я не понимаю, так это почему он работает после 3/4 раза, потому что между правами на папку не меняются.

Любая подсказка?

Спасибо!

Gilles

PS: версия Git на клиенте git-1.7.3.4-3.6 и на сервере git-1.7.4.1

1 Ответ

0 голосов
/ 19 апреля 2011

почему он работает после 3/4 раза, потому что между правами на папку не меняются.

Возможно, потому что это не связано с разрешениями.Скорее всего, существует какое-то состояние гонки, которое стало возможным благодаря сохранению в папке AFS.Лучше всего сделать ставку на

  • не делать этого (т. Е. Сначала хранить в локальном хранилище)
  • документация AFS для каждого использования, чтобы найти любые соответствующие флаги (ищите 'sync'',' delay ',' cache 'или' lazy ')
  • подать его как сообщение об ошибке / сообщение в группах пользователей AFS

Я видел подобные проблемы в ZFS-fuse, когда мы впервые начали оптимизировать малые записи (git выполняет очень точные и оптимизированные обновления статистики; если он не может сразу считывать, как ожидалось, он потерпит неудачу)

...