2011-03-16 5 views
2

커밋 훅 (pre-commit hook)을 쓰고 있습니다. tigris SVN 릴리스에서 표준으로 제공되는 훅을 편집하고 있습니다.미리 커밋 된 후크에서 오류 메시지를 쓸 수 없습니다.

저의 목표는 겸손합니다. 커밋 메시지를 제공하지 않고 커밋 한 사람에게 오류 메시지를 보내고 싶습니다.

제 생각에 간단한 오류 메시지로 stderr에 쓰는 것이 었습니다. 그러나 어떤 이유로 든 내 메시지는 절대 통과하지 못하는 것 같습니다.

인터넷에있는 모든 사람은 내가 stderr에 글을 남겨야한다고 말합니다. 그러나 어떻게 든 그것이 작동하지 않습니다.

REPOS="$1" 
TXN="$2" 


LOG="" 
#here is where it seems to wrong 
#if [ ${#LOG} -lt 1 ] 
     echo "You did not provide a commit message, please try again." 2>&1 
#fi 

echo 
# Make sure that the log message contains some text. 
SVNLOOK=/usr/bin/svnlook 
$SVNLOOK log -t "$TXN" "$REPOS" | \ 
    grep "[a-zA-Z0-9]" > LOG || exit 1 

# Exit on all errors. 
set -e 


# All checks passed, so allow the commit. 
exit 0 

바보 같은 질문이라면 실례지만 리눅스 초보자입니다. 미리 사과드립니다.

덕분에,

재스퍼
+0

어떤 OS입니까? svn의 어떤 버전입니까? –

+0

Debian Linux - Tigris SVN – Jasper

답변

7

로그 메시지를 결정하는 당신의 방법이 잘못된 것입니다. 대신 다음을 시도하십시오.

SVNLOOK=/usr/bin/svnlook 
LOGMSG=`$SVNLOOK log -t “$TXN” “$REPOS” | grep “[a-zA-Z0-9]” | wc -c` 

if [ "$LOGMSG" -lt 1 ]; then 
    echo -e “Please provide a meaningful comment when committing changes.” 1>&2 
    exit 1 
fi 
+0

최대한 빨리 시도하고 도움을 주셔서 감사합니다. – Jasper

+0

감사합니다, 그것은 매력처럼 작동합니다! – Jasper

1

귀하의 코드 :

echo "You did not provide a commit message, please try again." 2>&1 

가 stderr로 인쇄되지 않습니다 (대신이 표준 출력에 열려진 리디렉션). (중요한 것은 1> & 2입니다) 대신 사용

echo "You did not provide a commit message, please try again." 1>&2 
+0

답변을 주셔서 감사합니다. 그러나 문제가 해결되지 않았습니다. – Jasper