문제

우리는 '/apps/software'에 사는 웹 애플리케이션의 스테이징 버전 (기본적으로 아무도 작동하지 않는 전복 작업 사본)을 가지고 있습니다. 각 개발자는 '~/apps/software'에 자체 작업 사본이 있습니다. 개발자가 저장소에 변경을 할 때마다 스테이징 사본을 업데이트하기 위해 간단한 사후 커밋 후크 스크립트를 사용하고 싶습니다.

간단하게 들리나요? 글쎄, 나는 이것에 대해 더 오래 벽돌 벽에 머리를 두드렸다. 후크 스크립트 (/svn/software/hooks, 권한 = 777, user : group = apache : dev)에 위치한 후크 스크립트 ( 'Post-Commit'이라고 함)는 다음과 같습니다 (현재 주석에 대한 비트를 무시) :

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

그게 다야. 로그 파일에는 동일한 권한 및 사용자 : 그룹 이후 커미트 스크립트와 동일한 권한이 있으며 그룹 및 권한이 동일한 사용자에게 스테이징 사본을 제공했습니다. Apache 자체 (Apache Subversion Extension을 사용하고 있음)는 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