Следуя инструкциям в Рабочий процесс 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
.