Pergunta

Nós temos uma versão de teste do nosso aplicativo web (que é basicamente uma subversão cópia de trabalho que ninguém trabalhos sobre) que vive em '/ apps / software'. Cada desenvolvedor tem sua própria cópia de trabalho em '~ / apps / software'. Gostaria de utilizar um simples post-commit hook script para atualizar a encenação cópia cada vez que um desenvolvedor comete uma mudança para o repositório.

Parece simples né? Bem, eu estive batendo a cabeça contra uma parede de tijolos sobre isso por mais tempo do que deveria. O script de gancho (chamado de 'post-commit', localizado em / svn / software / ganchos, permissões = 777, user: group = apache: dev) é a seguinte (ignorar os bits comentadas por enquanto):

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

É isso. O arquivo de log tem as mesmas permissões e usuário: grupo como o script post-commit e eu mesmo tendo em conta a realização copiar o mesmo usuário: grupo e permissões. própria Apache (estamos usando a extensão subversão apache) está sendo executado em apache: dev também. Eu sei que o gancho está sendo executado, pois o material que é comentado acima do envio de um e-mail funciona bem - é apenas o comando de atualização que não é

.

Eu também pode executar o script post-commit gancho sem variáveis ??de ambiente usando:

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

e ele funciona muito bem, realizando a 'svn update' sem problemas. Eu até tentei remover o '>>' no arquivo de log, mas não fazer a diferença.

Qualquer ajuda sobre isso seria muito apreciada ...

Foi útil?

Solução

Seu único enviando a saída padrão para o log aqui, não saída de erro:

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

Fazer isso em vez de ver o que está acontecendo de errado:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top