SVN hook pre-revprop-изменение не работает

Я знаю, что это спрашивали много раз раньше, но я считаю, что моя ситуация отличается.

Я пытаюсь добавить крюк pre-revprop-change в наш репозиторий SVN, чтобы разрешить внесение изменений в сообщения журнала.

прежде чем я добавил pre-revprop-change файл я получал эту ошибку:

$ svn propset -r 557 --revprop svn:log "New message!" https://myserver/repos/myrepo
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'log': 
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
$ cd /var/www/svn/myrepo/hooks

$ # Create the simplest hook possible
$ echo '#!/bin/sh' > pre-revprop-change
$ echo 'exit 0' >> pre-revprop-change

$ # Check that it looks correct
$ cat pre-revprop-change
#!/bin/sh
exit 0

$ # Looks good, now make it executable
$ chmod a+x pre-revprop-change

$ # Check the permissions
$ ls -al pre-revprop-change
-rwxr-xr-x 1 apache apache 17 2012-05-24 12:05 pre-revprop-change

$ # Run it, to make sure it runs, and check the error code
$ ./pre-revprop-change 
$ echo $?
0

Итак, согласно всему остальному, что я прочитал, это должно быть все, что мне нужно, чтобы это сработало. Но, когда я пытаюсь отредактировать сообщение журнала, я все еще получаю ошибку (на этот раз):

$ svn propset -r 557 --revprop svn:log "New message!" https://myserver/repos/myrepo
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'log': 
Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.

есть несколько моментов, чтобы отметить:

1) репозиторий размещен на сервере SELinux (Fedora core 10). Возможно, есть что-то, что мне нужно сделать в отношении этих разрешений? Вот SE разрешения крючка:

$ ls -alZ pre-revprop-change
-rwxr-xr-x  apache apache unconfined_u:object_r:httpd_sys_content_rw_t:s0 pre-revprop-change

2) доступ к репозиторию осуществляется через WebDAV (обратите внимание на https:// в имя репозитория). Есть есть что-то, что мне нужно настроить на стороне WebDAV, чтобы разрешить изменения pre-revprop-change?

2 ответов


после нескольких часов попыток, я нашел ответ. И, поскольку он, похоже, не существует нигде в Интернете, я опубликую его здесь...

проблема была вызвана SELinux (не большой сюрприз там). Кажется, что apache (/usr/sbin/httpd) не имел необходимых разрешений для запуска скрипта hook с вышеупомянутыми разрешениями SE. Чтобы заставить его выполнить, разрешения SELinux необходимо изменить с помощью

$ chcon -t httpd_exec_t pre-revprop-change

(Я сначала попытался изменить его на httpd_sys_script_exec_t, но этого было недостаточно для выполнения скрипта. Но с httpd_exec_t тип он работал.)

последний вопрос: это безопасная вещь, чтобы делать?


имел аналогичную вещь на CentOS. Проблема, вероятно, была где-то в кэшировании, так как когда я редактировал файл, а затем изменил его обратно, он начал работать.

поэтому, если у кого-то есть аналогичная проблема, просто попробуйте:

touch hooks/pre-revprop-change