2009-09-11 4 views
4

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

Звуки простые правые? Ну, я уже стучал головой о кирпичную стену надолго, чем должен. Скрипт hook (называемый «пост-фиксация», расположенный в/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="[email protected]" 

# 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} 

Вот и все. Файл журнала имеет те же права доступа и пользователя: group, что и пост-фиксационный скрипт, и я даже дал промежуточной копии тот же пользователь: группа и разрешения. Сам Apache (мы используем расширение subversion apache) работает под apache: dev. Я знаю, что кадр выполняется, потому что материал, который был прокомментирован выше отправки электронной почты, отлично работает - это просто команда обновления, которой нет.

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

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

и он работает нормально, не выполняя «обновление СВН» нет проблем. Я даже попытался удалить «>>» в файл журнала, но это не имеет никакого значения.

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

+0

Не то, чтобы это имело какое-либо отношение к вашей проблеме, но ваш shebang говорит «sh», а тег на вашем вопросе говорит «bash». –

+0

ОК, я пошел за более широким тегом «shell». –

ответ

3

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

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

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

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1 
+0

Это очень помогло - тысяча благодарностей! В файле журнала указаны проблемы, которые у меня есть: Ошибка проверки сертификата сервера для : - Сертификат не выдается доверенным органом. Используйте отпечаток пальца для проверки сертификата вручную! (R) выбросить, принять (t) emporarily или принять (p) ermanently? svn: запрос PROPFIND не выполнен в '/ live' svn: PROPFIND of '/ live': проверка сертификата сервера не была выполнена: эмитенту не доверяли () Так что в основном мы используем SSL-сертификат, который мне нужен способ принятия его на постоянной основе. Любые идеи? –

+0

Ах, это описано в книге SVN здесь: http://svnbook.red-bean.com/en/1.5/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authn.sslcerts –

+0

файл 'servers' упомянутый здесь можно найти в '~/.subversion /' и описан здесь: http://svnbook.red-bean.com/en/1.5/svn.advanced.confarea.html#svn.advanced.confarea.opts. серверы –

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

  • Нет связанных вопросов^_^