Redmine + Gitolite - проблема с разрешениями хранилища и другими
У меня есть установка Redmine на том же сервере, что и мои репозитории gitolite.
Чтобы связать мой репозиторий с моим экземпляром Redmine, я локально клонировал репозиторий с помощью следующей команды:
git clone --bare --local /home/git/repositories/my-repo.git
Так же, как я успешно клонировал репо на сервере, я могу перемещаться по репо в Redmine, как и ожидалось.
Дело в том, что, как только я это сделаю, я не могу больше ничего толкать к удаленному репо на моей локальной машине.
Когда я пытаюсь
git push
Я получаю следующие ошибки:
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 695 bytes, done.
Total 8 (delta 6), reused 0 (delta 0)
fatal: loose object 455f30c5243ec5b5cc698b1e51bdfb23ee6c1b22 (stored in ./objects/45/5f30c5243ec5b5cc698b1e51bdfb23ee6c1b22) is corrupt
error: unpack failed: unpack-objects abnormal exit
To git@dev.my-host.org:my-repo.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git@my-host.org:my-repo.git'
Есть идеи по этому поводу?
РЕДАКТИРОВАТЬ #1
Гитолитовые журналы показывают следующее:
2012-10-22.10:59:59 13121 ssh ARGV=drgomesp SOC=git-receive-pack 'my-repo.git' FROM=187.65.248.7
2012-10-22.11:00:00 13121 access(my-repo, drgomesp, W, 'any'),-> refs/.*
2012-10-22.11:00:00 13121 trigger,Writable,access_1,ACCESS_1,my-repo,drgomesp,W,any,refs/.*
2012-10-22.11:00:00 13121 pre_git my-repo drgomesp W any -> refs/.*
2012-10-22.11:00:00 13121 system,git,shell,-c,git-receive-pack '/home/git/repositories/my-repo.git'
2012-10-22.11:00:00 13121 END
2 ответа
Мне удалось заставить его работать, указывая исходное хранилище на Redmine, так как оба находятся на одной машине, выполнив несколько простых шагов:
Добавьте репозиторий на Redmine с оригинальным репозиторием репозитория gitolite. Путь будет что-то вроде
/home/git/repositories/my-repo.git
,Изначально Redmine не имеет никаких прав для чтения репозитория, поэтому мы решаем проблему, добавляя пользователя Redmine (обычно
www-data
или жеapache
) кgit
группа по бегуusermod -a -G git www-data
(знайте о конфигурации вашего сервера, потому что она может немного отличаться в зависимости от того, как вы настроили gitolite.Изменить
UMASK
собственность на.gitolite.rc
файл, из значения по умолчанию0077
в0022
, эквивалент755 (rwxr-xr-x)
для каталогов и644 (rw-r--r--)
для файлов.Для существующих репозиториев вам может потребоваться запустить
chmod -R g+rX
Если вы все еще испытываете проблемы с разрешениями в Redmine, где он открывает 404
вместо репо на вкладке репозитория, вам может потребоваться запустить chmod -R g+rX
в целом /home/git/repositories
, чтобы удостовериться, что пользователь Redmine может читать весь путь через репозитории.
Если git repack remote/origin/master
не решает проблему, проверьте ваш umask (umask 0002
), чтобы избежать каких-либо проблем с правами на запись, как указано в " git: can push (ошибка распаковщика)".
Помимо этого, " Распаковка ошибок Git-pushing с чистого репо на промежуточный сервер" суммирует все остальные пункты для проверки.