Сбой Subversion на крюке после фиксации? - PullRequest
1 голос
/ 05 августа 2010

Я пытаюсь заставить Subversion автоматически развертывать текущую рабочую копию после коммита.

Например, если кто-то проверяет репозиторий public_html и затем вносит изменения, мне нужно, чтобы SVN автоматически запускал svn update / path / to / public_html / на сервере, на котором запущен svn.

Я установил хук после фиксации, который вызывает:

/ usr / bin / svn update / path / to / public_html /

Я гарантирую, что ловушка после фиксации является исполняемой, и если я вручную запускаю скрипт через SSH, он запускается правильно и обновляет / path / to / public_html / dir, поэтому мы знаем, что скрипт после фиксации работает нормально.

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я фиксирую, я получаю эту ошибку:

Transmitting file data .svn: Commit failed (details follow):
svn: MERGE of '/svn/public_html': 200 OK (http://ourdomain.com)

Дело в том, что SVN лежит сквозь зубы: фиксация на самом деле НЕ завершается неудачей - если я вручную обновляю dir (или запускаю скрипт post-commit) вручную, обновление завершается, и изменения отражаются на сервере.

Итак, кто-нибудь знает, почему мой хук после коммита не работает?

Я видел немало постов на эту тему, но ни у одного, похоже, нет никаких решений, кроме как "попробуйте запустить скрипт post-commit вручную", который я пробовал, и он отлично работает .. Так что post-commit Сценарий не проблема, похоже, проблема с самим SVN.

Любая помощь будет принята с благодарностью !!

Ответы [ 2 ]

1 голос
/ 05 августа 2010

Вы должны знать, что в скрипте ловушек не существует среды ... что означает, что вы должны использовать абсолютные пути в ваших скриптах вместо команды, потому что у вас нет и пути.Вы уверены, что используете post-commit, потому что post-commit не может провалить коммит, только pre-commit и start-commit могут сделать такую ​​вещь.

0 голосов
/ 05 августа 2010

Проверьте, имеет ли ID пользователя процесса сервера SVN достаточные права на / path / to / public_html / для записи файлов и каталогов.

Другая идея: ему также необходим доступ к своему собственному репозиторию, как указано в рабочей копии "/ path / to / public_html /". Если вы используете протокол svn + ssh или http, вы можете изменить его на файловый протокол - он все равно находится на том же сервере.

...