SVN Post-Commit Hook error 255 - PullRequest
       52

SVN Post-Commit Hook error 255

9 голосов
/ 21 октября 2011

Я пытаюсь создать очень простую зацепку после фиксации для репозитория, который я настроил на своем сервере. Сценарий выглядит следующим образом:

REPOS="$1"
REV="$2"

cd /var/www/directory && svn update --username user --password pass

Когда я запускаю коммит из моего клиента SVN, я получаю следующую ошибку:

post-commit hook failed (exit code 255) with no output.

Однако, когда я запускаю свой хук post-commit из cli с помощью sudo bash post-commit, он отлично работает. Есть идеи о том, что я делаю не так?

Ответы [ 4 ]

6 голосов
/ 21 октября 2011

255 означает, что файл не найден, попробуйте использовать абсолютный путь ко всем файлам:

REPOS="$1"
REV="$2"

cd /var/www/directory && /usr/bin/svn update --username user --password pass

Переменная PATH env среды, в которой выполняется ловушка post commit, вероятно, не будет включена в то место, где живет исполняемый файл SVN.

4 голосов
/ 29 октября 2011

Хорошо, я выяснил проблему.Это была комбинация проблемы пути (как предложено chown, чей ответ я выберу) и проблемы с разрешениями.Я написал сообщение в блоге об этой проблеме (а также о том, как обычно настраивать SVN), которое можно найти по адресу http://brennydoogles.wordpress.com

1 голос
/ 22 декабря 2015
  • Не забудьте добавить #!/bin/sh в свой хук после фиксации. Используйте #!/bin/env python, если вы используете python
  • Убедитесь, что разрешение chmod a+x post-commit
  • Убедитесь, что команды в вашем хуке установлены и доступны.

Я сталкиваюсь с этой проблемой при запуске SVN в докере (на основе Ubuntu) и использую перехват после фиксации для моей синхронизации Redmine:

curl "http://my.redmine.ip/sys/fetch_changesets?id=myproject&key=ETji9KUfs3XxLyyr6cRN"

Я получил ошибку Warning: post-commit hook failed (exit code 255) with no output.

Затем я захожу в докер, запускаю этот хук вручную и обнаруживаю, что 'curl' не установлен.

Я успешно устанавливаю curl и запускаю hook, но при фиксации все равно то же предупреждение.

После добавления #!/bin/sh вот так:

#!/bin/sh
curl "http://my.redmine.ip/sys/fetch_changesets?id=myproject&key=ETji9KUfs3XxLyyr6cRN"

Все хорошо.

0 голосов
/ 19 сентября 2018

Также, если svn-сервер работает под Apache, а операционная система работает под управлением SElinux, не забудьте дать apache разрешение на запуск сценария, например:

% chcon -t httpd_exec_t / home / svn / repos / hooks / post-commit

...