svn钩子强制提交注释和限制指定类型文件提交

2025-10-06 06:48:47

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、不写注释提交一个代码文件,会出现如下的错误警告,如下图:

svn钩子强制提交注释和限制指定类型文件提交

4、提交一个限制提交的类型的文件,会出现如下的错误警告,如下图:

svn钩子强制提交注释和限制指定类型文件提交

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢