Назад | Перейти на главную страницу

Развертывание веб-сайта git prime / hub: изменения корневого документа сохраняются нормально, но для подкаталогов отказано в разрешении

Следуя инструкциям в Рабочий процесс Git, ориентированный на веб Я установил главный репозиторий и хаб-репозиторий на своем веб-сервере, а затем клонировал хаб на свою машину дома.

Я начал тестировать коммиты и пуши с измененными файлами в корневом каталоге документов, и изменения будут нормально отображаться в корне веб-сервера. Однако, когда я попытался отправить файл в подкаталог, я получил следующее сообщение:

remote:
remote: **** Pulling changes into Prime [Hub's post-update hook]
remote:
remote: From /home/git/site_hub
remote:  * branch            master     -> FETCH_HEAD
remote: error: unable to create file academy/testthegit2.html (Permission denied)

Опять же, нет проблем с разрешениями в корневом веб-каталоге, но помещаем файл в подкаталог, и выдается ошибка.

Пользователь git находится в группе apache, а подкаталоги - chmod 755.

Вот пост-обновление хаба:

#!/bin/sh

echo
echo "**** Pulling changes into Prime [Hub's post-update hook]"
echo

cd /usr/local/apache/htdocs || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info

и основное пост-обновление (корень документа):

#!/bin/sh

echo
echo "**** pushing changes to Hub [Prime's post-commit hook]"
echo

git push hub

Повторюсь, работает в корне, не работает в подкаталоге.

Спасибо за любой совет.

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

На моем сервере голыми репозиториями (хабами) управляет пользователь gitosis / gitolite / plain git с помощью git-shell. Файлы в $GITOSIS_HOME принадлежат gitosis:gitosis и маскируются 077.

Чтобы изменения были внесены правильно, мне нужно было добавить вызов вспомогательного скрипта, который я храню в /usr/local/bin который рекурсивно устанавливает владельца, группу, разрешения и контекст SELinux в основном / реальном репозитории.

Кстати, мне также нужно было добавить строку в свой sudoers(5) файл, чтобы разрешить gitosis запустить скрипт как root с !requiretty и NOPASSWD.