先說說鉤子是幹什麼的吧,,簡單的說,svn鉤子就是在提交svn時前後所要觸發的事件,於是我們可以用鉤子做一些提交時的限制,及提交後的操作。最常用的一般有兩個,pre-commit,post-commit。下面分別簡單說下概念。
一、鉤子概述
1)start-commit — 開始提交的通知
描述
start-commit 在開始事務之前執行。通常用來確定用戶是否有提交權限。
如果 start-commit 鉤子程序返回非零值,提交就會在創建事務之前停止,stderr 的任何輸出都會返回到客戶端。
輸入參數
傳遞給你鉤子程序的命令行參數,按照順序是:
1.版本庫路徑
2.認證過的嘗試提交的用戶名
3.Colon-separated list of capabilities that a client passes to the server, including depth, mergeinfo, and log-revprops
2)pre-commit — 在提交結束之前提醒。
描述
pre-commit 鉤子在事務創建新版本之前運行。通常這個鉤子是用來保護因爲內容或位置(例如,你要求所有到一個特定分支的提交必須包括一個 bug 追蹤的 ticket 號,或者是要求日誌信息不爲空)而不允許的提交。
如果 pre-commit 鉤子返回非零值,提交會終止,提交事務被刪除,所有 stderr 的輸出會返回到客戶端。
輸入參數
傳遞給你鉤子程序的命令行參數,按照順序是:
1.版本庫路徑
2.提交事務的名稱
3)post-commit — 成功提交的通知。
描述
post-commit 鉤子在事務完成,創建新版本後執行。大多數人用這個鉤子來發送關於提交的描述性電子郵件,或者用來提醒其它工具(例如問題跟蹤),發生了提交動作。一些配置也使用這個鉤子觸發版本庫的備份進程。
如果 post-commit 鉤子返回非零值,提交不會終止,因爲它已經完成。然後,所有 stderr 的輸出都會返回到客戶端,讓診斷鉤子的失敗更容易。
輸入參數
傳遞給你鉤子程序的命令行參數,按照順序是:
1.版本庫路徑
2.提交創建的修訂版本號
二、pre-commit鉤子舉例說明
1、此腳本會在提交前對事件進行檢查
[root@CentOS_11 test]# cat /svndata/test/hooks/pre-commit
#!/bin/sh
REPOS="$1"
TXN="$2"
export LANG=en_US.UTF-8 ; export LC_CTYPE=en_US.UTF-8 #設置本地字符集編碼
MAX_SIZE=5242880000
FILTER='\.()$'
SVNLOOK=/usr/bin/svnlook
AUTHORS='(tao|wang)'
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" |wc -c` ; 判斷輸入log的最小字符,小於10個不讓提交
if [ $LOGMSG -lt 10 ];then
echo -e "log message can't be empty or less 9 chars as commit!" >&2
exit 1
fi
SVNUSER=`$SVNLOOK author -t "$TXN" "$REPOS"` ; 限制提交用戶,不是腳本定義的用戶不讓提交,不過基本svn權限配置文件就夠了。
if echo $SVNUSER |/bin/grep -vEq $AUTHORS ;then
echo -e "Sorry you no be author" >&2
exit 1
fi
#定義過濾出當前提交的所以文件內容
File=$($SVNLOOK changed -t $TXN $REPOS|cut -d " " -f 4-) ; 限制提交文件的類型
#對當前提交的所有文件進行循環
echo "$File" |while read f;do
#如果文件被過濾出來就則匹配,輸出不允許提交。
if echo $f |tr A-Z a-z|grep -Eq $FILTER;then
echo "File $f is not allow $FILTER file" >&2
exit 1
fi
FilesSize=`$SVNLOOK cat -t "$TXN" "$REPOS" "$f" |wc -c` ; 限制單個文件提交的大小
if [ "$FilesSize" -gt "$MAX_SIZE" ];then
echo "File $f is too large(must <=$MAX_SIZE)B" >&2
exit 1
fi
done
======================
提示:將以上腳本放到版本庫的hooks下,並給執行權限,將提交時如果有符合以上限制,將限制提交。這裏就不作測試,可自行測試,很簡單。
======================
---------------------
作者:Jack小火苗
來源:CSDN
原文:https://blog.csdn.net/zhanghao143lina/article/details/79588603
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!