Subversion пост-фиксационный хук для обновления 'промежуточной' версии не работает

StackOverflow https://stackoverflow.com/questions/1409791

Вопрос

У нас есть промежуточная версия нашего веб-приложения (в основном это рабочая копия Subversion, над которой никто не работает), которая находится в «/ apps / software». Каждый разработчик имеет свою рабочую копию в «~ / apps / software». Я хотел бы использовать простой скрипт ловушки после фиксации для обновления промежуточной копии каждый раз, когда разработчик вносит изменения в хранилище.

Звучит просто, верно? Ну, я бился головой об эту кирпичную стену дольше, чем следовало бы. Сценарий перехвата (называемый 'post-commit', расположенный в / svn / software / hooks, permissions = 777, user: group = apache: dev) выглядит следующим образом (пока игнорируем закомментированные биты):

#!/bin/sh

/usr/bin/svn update /apps/software >> /var/log/svn/software.log

# REPOS="$1"
# REV="$2"
# AUTHOR=`/usr/bin/svnlook author -r "$REV" "$REPOS"`
# LOG=`/usr/bin/svnlook log -r "$REV" "$REPOS"`
# EMAIL="test@example.com"

# echo "Commit log message as follows:-
#
# \"${LOG}\"
#
# The staging version has automatically been updated.
#
# See http://trac/projects/software/changeset/${REV} for more details." | /bin/mail -s "SVN : software : revision ${REV} committed by ${AUTHOR}" ${EMAIL}

Вот и все. Файл журнала имеет те же разрешения и user: group, что и скрипт post-commit, и я даже дал промежуточную копию тому же пользователю: group и permissions. Сам Apache (мы используем расширение Apache Subversion) также работает под Apache: Dev. Я знаю, что ловушка выполняется, потому что материал, который закомментирован выше при отправке электронного письма, работает нормально - это просто команда обновления, которая не работает.

Я также могу выполнить скрипт перехвата после фиксации без переменных окружения, используя:

$ env - /svn/software/hooks/post-commit /svn/software <changeset>

и работает нормально, без проблем выполняется обновление svn. Я даже пытался удалить "> >" войти в файл, но это не имеет значения.

Любая помощь по этому вопросу будет наиболее ценной ...

Это было полезно?

Решение

Здесь вы отправляете только стандартный вывод в журнал, а не вывод ошибок:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log

Сделайте это вместо этого, чтобы увидеть, что идет не так:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top