svn添加強制注釋,pre-commit結合python


鑒於組內有些人在提交代碼的時候並不寫注釋,而且沒有固定格式,所以准備給svn提交時增加強制注釋。

首先找到代碼庫里的hooks目錄,正常建svn庫的時候都有這個目錄。進入hooks目錄,找到pre-commit.tmpl,去掉tmpl,重命名為pre-commit。

這是一個shell腳本,如果是簡單的判斷注釋內容不能小於幾個字符,直接寫shell腳本就可以,但是現在我想讓開發按照固定格式提交代碼,

例如:

    reason:電商

    developer:du

    reviewer:du

shell應該也是可以做到的,但是本人shell用的確實不怎么熟練,況且python寫起來更簡單,所以用了一種shell結合python的方式做hook。

首先上python腳本

check.py

#coding=utf-8
import sys  

inputstr = sys.argv[1]

if inputstr=="":
    exit(1);
lstr=inputstr.split("\n")
if len(lstr)==3:
    if ('reason:' in lstr[0] and len(lstr[0])>len('reason:')) and ('developer:' in lstr[1] and len(lstr[1])>len('developer:')) and ('reviewer:' in lstr[2] and len(lstr[2])>len('reviewer:')):
       exit(0);
    else:
       exit(1);   
else:
    exit(1);


然后是pre-commit

 

#!/bin/sh
SVN_BINDIR=/opt/subversion/bin/svnlook
REPOS="$1"
TXN="$2"
LOGMSG=`$SVN_BINDIR log -t "$TXN" "$REPOS"`
var=`python /opt/svndata/repos/hooks/check.py "${LOGMSG}"`
result=$?
if [ $result -gt 0 ]
then
echo -e "you must input comment like this:\r\nreason:\r\ndeveloper:\r\nreviewer:" 1>&2
exit 1
fi
exit 0

這個pre-commit最好用vim來寫,不要windows里寫好再傳到linux服務器上,會報格式錯誤,其實1>&2,-e也要加,只有這兩個都加了,客戶端提交的時候才能看到錯誤信息。
shell里對變量的引用 $result 和"$result"都可以,但是不要用單引號。還有if [ $result -gt 0 ]這塊,空格一定要留出來,不然會報錯

驗證一下,如下

無注釋提交

會提示

上面的錯誤是系統原因,無大礙。主要是中間紅框內的提示。我們可以看出增加強制注釋成功。

----------------

由此例可以看出,我們完全可以在此基礎上滿足其他需求,例如提交代碼發郵件,記日志入庫等功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM