Apache & SVN в Ubuntu - перехват после фиксации происходит молча, перехват до фиксации "Отказано в доступе"

Последние пару дней я изо всех сил пытался получить почтовые уведомления после фиксации, работающие на моем SVN-сервере (работающем через HTTP с Apache2 в Ubuntu 9.10). Коммиты SVN работают нормально, но по какой-то причине хуки не выполняются должным образом.

Вот параметры конфигурации: - Пользователи получают доступ к репо через HTTP с помощью модуля apache dav_svn (я создал пользователей / пароли через htpasswd в файле dav_svn.passwd).

dav_svn.conf:

 <Location /svn/repos>
  DAV svn
  SVNPath /home/svn/repos

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  Require valid-user
  </Location>
  • Я создал файл перехвата после фиксации, который записывает простое сообщение в файл в корне хранилища:

/ Главная / SVN / хранилищу / Крючки / после совершения:

#!/bin/sh

REPOS="$1"
REV="$2"

/bin/echo 'worked' > ${REPOS}/postcommit.log

Я установил, что весь репозиторий будет принадлежать www-данным (пользователь apache), и назначил 755 разрешений сценарию post-commit

когда я тестирую скрипт post-commit с помощью пользователя www-data в пустой среде, он работает:

sudo -u www-data env - /home/svn/repos/hooks/post-commit /home/svn/repos 7

Но когда я фиксирую на клиентском компьютере, фиксация успешна, но сценарий после фиксации, похоже, не выполняется.

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

"Не удалось выполнить фиксацию (подробности приведены ниже): невозможно создать нулевой стандартный вывод для ловушки '/home/svn/repos/hooks/pre-commit': разрешение отклонено"

Я сделал несколько поисков в Google для этой ошибки, и я предполагаю, что это проблема с пользователем apache (www-data), не имеющим достаточных разрешений, особенно для выполнения / dev / null. Я также читал, что причина, по которой пост-фиксация завершается сбоем, заключается в том, что она не сообщает с помощью stdout.

В любом случае, я также попытался предоставить пользователю apache (www-data) право владения всем хранилищем и отредактировал виртуальный хост apache, чтобы разрешить операции с корнем сервера, и я по-прежнему получаю отказ в разрешении

/etc/apache2/sites-available/primarydomain.conf

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

Любые идеи / предложения будут с благодарностью! Спасибо

1 ответ

Решение

Итак, после обсуждения этой проблемы с очень полезным системным администратором в лучшем хостинг-провайдере, RailsPlayground, они смогли решить эту проблему, установив разрешения для /dev/null равными

crw-rw-rw- 1 root   root    1,   3

и теперь все SVN-хуки работают как положено.

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