天天看點

svn送出時強制注釋

不少開發員送出修改的時候都不寫注釋,導緻檢視曆史時很費勁,也不太符合規範。有的公司要求每次送出修改時都寫上bug号或者任務描述,那麼如何在工具上防止開發員們不寫注釋呢? 

  利用svn的pre-commit鈎子可簡單實作此要求。 

進入倉庫project1/hooks目錄,找到pre-commit.tmpl檔案,重命名,去掉字尾.tmpl。 

編輯pre-commit檔案:(Linux系統和windows系統腳本内容見1和2) 

1、Linux系統

方法1:

将: 

$SVNLOOK log -t "$TXN" "$REPOS" | \ 

   grep "[a-zA-Z0-9]" > /dev/null || exit 1 

commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 

這三行注釋掉(前面加#符号), 

在此位置添加如下幾行: 

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c` 

if [ "$LOGMSG" -lt 5 ];#要求注釋不能少于5個字元,您可自定義 

then 

  echo -e "\nLog message cann't be empty! you must input more than 5 chars as comment!." 1>&2 

  exit 1 

fi 

儲存,退出。 

給pre-commit添加可執行權限: 

chmod +x pre-commit 

這裡記得修改 $SVNLOOK=(svnlook的路徑,/csvn的安裝目錄/bin/svnlook) 

配置結束,可以使用了。

方法2:

這兩天把項目的開發機遷移到了linux環境,用python重寫了原來的svn hook,儲存為pre-commit放到svn的hooks目錄下,chmod +x pre-commit加上執行權限即可。windows下寫SVN鈎子比較麻煩,隻能是批處理或者exe,linux下随便用什麼腳本語言寫都可以,隻要加上可執行權限就行了。

 2、windows強制注釋腳本

@echo off  

 setlocal 

 set REPOS=%1  

 set TXN=%2          

rem 保證輸入8個字元 

 svnlook log %REPOS% -t %TXN% | findstr "........" > nul 

 if %errorlevel% gtr 0 goto :err_action

rem 過濾空格字元 

svnlook log %REPOS% -t %TXN% | findstr /ic:"        " > nul 

 if %errorlevel% gtr 0 goto :success 

 :err_action 

 echo 你本次版本送出未填寫任何變更的日志說明資訊.      >&2 

 echo 請補充日志說明資訊後再送出代碼,例如:功能說明等.  >&2 

 echo 輸入的日志資訊不少于8個字元說明(或4個漢字),謝謝! >&2 

 echo *******************禁止空格資料***************** >&2

 goto :err_exit

:err_exit 

 exit 1 

 :success 

 exit 0