У меня есть обработчик SVN post-commit, который обновляет рабочую копию при выполнении фиксации в хранилище. Хук post-commit выполняет следующую команду:
/usr/bin/svn update /path/to/working/copy
Работало нормально, пока я не включил директиву Apache mod_dav Require valid-user
. Аутентификация хороша при использовании tortoisesvn-клиента для Windows, так как он запрашивает ваше имя пользователя и пароль и сохраняет данные. Но поскольку это неинтерактивный процесс, имя пользователя и пароль не указываются, и обновление завершается неудачно.
Apache работает как пользователь и группа nobody
и nogroup
, это также пользователь и группа, которым принадлежат репозитории и рабочие копии.
У пользователя nobody
нет пароля, поскольку он не может войти в систему. Он просто используется для запуска Apache и т. Д. Я попытался добавить nobody
в файл dav_svn.passwd
, используя следующую команду:
htpasswd dav_svn.passwd nobody
Я получаю следующую ошибку при попытке запустить скрипт post-commit непосредственно из командной строки:
Authentication realm:
Обновление:
Добавление в dav_svn.conf следующего:
Allow from 127.0.0.1
Satisfy any
Исправляет проблему, но затем вызывает другую проблему в том, что клиент tortoisesvn больше не требует аутентификации.