2013-10-03 2 views
3

Я провел пару недель, пытаясь решить эту проблему (без какого-либо прогресса).Сценарий пост-фиксации SVN не выполняется

Я последовал раздел СВН Redbook "Реализация Repository Крючки" по:

  • копирование на $ REPOSITORY_HOME/крюки/пост-commit.tmpl файл $ REPOSITORY_HOME/Крючки/после совершения

  • делая $ REPOSITORY_HOME/крючки/после совершения скрипта исполняемого с помощью учетной записи, которая работает либо HTTPD или Svnserve (на самом деле, я сделал его исполняемым всем)

  • проверить, что мой пост-коммит сценарий может быть запущен вручную к тому же пользователю в командной строке

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

Одна вещь, которую я нашел в редакторе svn redbook и post-commit.tmpl, что я немного смущен тем, что именно он выводит: «Обратите внимание, что« пост-фиксация »должна быть выполнена пользователем (s), который будет вызывать его (как правило, пользователь httpd работает как), и этот пользователь должен иметь разрешение на уровне файловой системы для доступа к репозиторию ».

Означает ли это, что пользователь, выполняющий сценарий пост-фиксации, также должен быть пользователем, который может обращаться к репозиторию SVN (через SVN-клиент, такой как tortoiseSVN или, скорее, локальная учетная запись пользователя, которая может обращаться к файлам репозитория SVN через что-то таких как шпатлевка). Я считаю, что это может быть моя проблема, но я не совсем уверен, потому что пользователь, который запускает httpd, является владельцем сценария post-commit и файловой системы, на которой находится репозиторий. Поэтому он имеет все права, необходимые ему для файловой системы. Однако я не могу удаленно проверять каталоги/файлы из репозитория с помощью tortoiseSVN на моей рабочей станции, используя эту учетную запись пользователя.

Любое понимание очень ценится!

Уже рассмотренные ссылки:

ответ

0

Если сервер SVN размещен на Linux, то вам нужно пометить файл как исполняемый для этого пользователя:

chmod a+x $REPOSITORY_HOME/hooks/post-commit 

Если Сервер SVN размещается на окнах, тогда вам, вероятно, нужно переименовать post-commit file to post-commit.bat

1

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

post-commit hook failed (exit code 1) with output: 
You need version 1.5.0 or better of the Subversion Python Bindings 

Если это так, то я думаю, что вы бы не установить переменную среды внутри скрипта ловушки. По соображениям безопасности репозиторий Subversion выполняет программы-крючки с пустой средой, то есть переменные среды не устанавливаются вообще, даже $ PATH (или% PATH%, под Windows). Из-за этого многие администраторы сбиты с толку, когда их программа-перехватчик работает отлично вручную, но не работает при запуске Subversion.

Примечание. Обязательно укажите любые необходимые переменные среды в своей программе-крюке и/или используйте абсолютные пути к программам.

Смежные вопросы