2011-03-16 64 views
2

我正在編寫一個預先提交掛鉤,或更好的,我正在編輯底格里斯河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 

如果這是一個愚蠢的問題,你不得不原諒,但我是一個Linux新手,所以事先道歉。

感謝, 碧玉

+0

什麼操作系統?什麼版本的svn? – 2011-03-16 19:09:03

+0

Debian Linux - Tigris SVN – Jasper 2011-03-16 19:19:28

回答

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 2011-03-17 19:21:39

+0

謝謝,它就像一個魅力! – Jasper 2011-03-17 19:44:59

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 2011-03-16 19:25:16