После фиксации Subversion не вызывается

Я попытался сделать постфикс, чтобы обновлять свой сайт при каждом коммите. в /hooks/post-commit

Я сделал следующее

/svnUupdat/cProgrammeThatUpdate >> /log/test.log

Хорошо, если я попробую это

env - ./post-commit

работает, сайт обновляется до последней ревизии (и в логе что-то есть)

но если я совершу, посткоммит не вызывается ?? (ничего в логе и сайт не обновляется)

Обратите внимание, что если я добавлю только post-commit

/bin/echo "post-commit run" >> /log/test.log

Если что-то зафиксировать ... это работает ... в журнале что-то есть ... Почему тогда не вызывается моя программа c?

ИЗМЕНИТЬ Я попробовал кое-что еще, что вместо вызова программы c

/usr/bin/svn update /var/www/vhost/xx.com/site1/ >> /var/log/svn/example.log

в журнале я пропустил /var/www...

Почему пропускается? если я запускаю обновление svn в терминале, он работает, рабочий каталог получает последнюю версию

спасибо


person Johny19    schedule 06.12.2011    source источник


Ответы (2)


ОСТЕРЕГАЙТЕСЬ, что когда SVN вызывает файл ловушки, он делает это так, как если бы переменные окружения не были установлены. Поэтому вам придется вручную установить переменную PATH в начале вашего хукового файла.

person Gupta    schedule 06.12.2011

Сообщение «пропущено» указывает на то, что Subversion не может обновить каталог, поскольку это не рабочая копия. Однако это противоречит вашему заявлению о том, что вы можете обновить каталог вручную. Может быть, у вас где-то опечатка в пути?

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

person u-punkt    schedule 06.12.2011
comment
Привет, Действительно, у меня была опечатка на моем пути (в посткоммите). Теперь, когда путь правильный после коммита, в журнале ничего нет... Так что, вероятно, это проблема привилегий. Процесс, который фиксируется, - это httpd, а его владельцем является apache. Я уже сделал chown apache.apache post-commit. Должен ли я делать то же самое с моим рабочим каталогом? - person Johny19; 06.12.2011
comment
Поскольку вы планируете обновить свой рабочий каталог, вам наверняка потребуются права на запись. Попробуйте su - apache (или как там у вас httpd пользователь) и выполните скрипт после фиксации. Однако вы должны знать, что вы делаете, когда меняете разрешения для демона http, так как это может иметь последствия для безопасности. Рассматривали ли вы вместо этого использование «svn + ssh» для доступа к вашему репозиторию? - person u-punkt; 06.12.2011