Недостаточное разрешение на отправку Git Shared Repo через Smart HTTP

Я пытаюсь оценить git для нашей команды, и одно из требований - использовать HTTPS в качестве метода транспорта. Я пытался следить за документацией git-http-backend, а также за некоторыми редкими блогами по настройке этого с использованием нового транспорта Smart HTTP, но просто не получаю его работу. Я знаю, что это, вероятно, что-то глупое, но я ломал голову над этим безрезультатно. Не думайте, что с git у вас есть реальные знания, я довольно новичок в этом инструменте.


Прямо сейчас я могу клонировать по HTTP просто отлично, но когда я пытаюсь нажать, клиент получает:

$ git push
Username:
Password:
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 291 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
error: unpack failed: unpack-objects abnormal exit


Журнал ошибок сервера Apache говорит:

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

фатальный: не удалось записать объект


Конфигурация Apache:

SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

<Location /git>
        AuthType Basic
        AuthName "Private Git Access"
        Require valid-user
        AuthUserFile /opt/git/passwords
</Location>


Очевидно, что моей первой мыслью были права доступа к файлам, поэтому я быстро выбрал -R apache: /opt/git

# ls -l /opt/git
drwxr-xr-x. 7 apache apache 4096 Aug 12 11:06 project.git

Но я все еще получаю ту же ошибку.

Спасибо, я очень ценю любую помощь, которую я могу получить в этом.

2 ответа

Решение

Попробуйте запустить:

git repo-config core.sharedRepository true

Это решило подобную проблему для меня. Из документов:

core.sharedRepository

Если значение равно true, репозиторий становится доступным для нескольких пользователей в группе (убедитесь, что все файлы и объекты доступны для записи в группе).

Можете ли вы проверить шаги, описанные здесь (это определенно проблема с разрешениями / группами):

http://parizek.com/?p=177

Решение, вероятно, заключается в групповых разрешениях хранилища на сервере.

  1. cd to / opt / git
  2. sudo chgrp -R apache project.git

Я думаю, что Apache обычно работает как www-данные, а не как Apache, поэтому группа также может ошибаться.

Я использую Gitosis и управляю учетными записями через учетные записи сервера вместо Apache, но решил ту же проблему с помощью такого решения

Другие вопросы по тегам