svn钩子强制提交注释和限制指定类型文件提交
1、新建一个记事本文件,输入下面文字:
@echo
rem SVN强制写注释的hooks脚本(Windows)
rem 文件名是: pre-commit.bat,放到repository/hooks目录下
setlocal
set SVN_BINDIR="C:\Program Files (x86)\SlikSvn\bin"
set REPOS=%1
set TXN=%2
rem 检查是否提交日志
%SVN_BINDIR%\svnlook log -t "%TXN%" "%REPOS%" | findstr "......" > nul
if %errorlevel% gtr 0 goto nolog
rem 过滤文件类型
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.obj$"
if %errorlevel% EQU 0 (goto SuffixError1)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.pdb$"
if %errorlevel% EQU 0 (goto SuffixError2)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.idb$"
if %errorlevel% EQU 0 (goto SuffixError3)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.pch$"
if %errorlevel% EQU 0 (goto SuffixError4)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.res$"
if %errorlevel% EQU 0 (goto SuffixError5)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.exp$"
if %errorlevel% EQU 0 (goto SuffixError6)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.ilk$"
if %errorlevel% EQU 0 (goto SuffixError7)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.dep$"
if %errorlevel% EQU 0 (goto SuffixError8)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.suo$"
if %errorlevel% EQU 0 (goto SuffixError10)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.ncb$"
if %errorlevel% EQU 0 (goto SuffixError11)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.aps$"
if %errorlevel% EQU 0 (goto SuffixError12)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.log$"
if %errorlevel% EQU 0 (goto SuffixError13)
%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.user$"
if %errorlevel% EQU 0 (goto SuffixError14)
exit 0
:nolog
echo 日志(Message)是跟踪文档的重要信息,必须输入,不得输入无意义字符,长度不得小于6个字符。 1>&2
exit 100
:SuffixError1
echo obj文件禁止提交,请检查: "%TXN%" 1>&2
exit 1
:SuffixError2
echo pdb文件禁止提交,请检查: "%TXN%" 1>&2
exit 2
:SuffixError3
echo idb文件禁止提交,请检查! 1>&2
exit 3
:SuffixError4
echo pch文件禁止提交,请检查! 1>&2
exit 4
:SuffixError5
echo res文件禁止提交,请检查! 1>&2
exit 5
:SuffixError6
echo exp文件禁止提交,请检查! 1>&2
exit 6
:SuffixError7
echo ilk文件禁止提交,请检查! 1>&2
exit 7
:SuffixError8
echo dep文件禁止提交,请检查! 1>&2
exit 8
:SuffixError10
echo suo文件禁止提交,请检查! 1>&2
exit 10
:SuffixError11
echo ncb文件禁止提交,请检查! 1>&2
exit 11
:SuffixError12
echo aps文件禁止提交,请检查! 1>&2
exit 12
:SuffixError13
echo log文件禁止提交,请检查! 1>&2
exit 13
:SuffixError14
echo user文件禁止提交,请检查! 1>&2
exit 14
然后将这个文件重命名为pre-commit.bat
2、将pre-commit.bat复制到服务器上svn仓库的hook目录下,比如我的是D:\Repository\VisDraw\hooks下面。
3、不写注释提交一个代码文件,会出现如下的错误警告,如下图:
4、提交一个限制提交的类型的文件,会出现如下的错误警告,如下图: