1、pre-commit
@ECHO
REM Subversion Hooks Script For Windows Author chen hua
REM 1、日志不能为空 2、只有管理员才能删除文件夹或文件
SETLOCAL
SET BINDIR=C:\"Program Files"\"VisualSVN Server"\bin
SET SCM=admin
SET REPOS=%1
SET TXN=%2
REM 1、日志不能为空
%BINDIR%\svnlook log -t "%TXN%" "%REPOS%" | findstr ".........." > nul
if %ERRORLEVEL% gtr 0 goto :NOLOG
REM 2、只有管理员才能删除文件夹或文件
%BINDIR%\svnlook author -t "%TXN%" "%Repos%" | findstr "%SCM%"
IF %ERRORLEVEL% gtr 0 goto CHECK
EXIT 0
:CHECK
%BINDIR%\svnlook changed -t "%TXN%" "%Repos%" | findstr "^D"
if %ERRORLEVEL% == 0 goto NODELETE
EXIT 0
:NOLOG
echo 【系统提示】:日志是跟踪文档的重要信息,不能为空且长度不得小于10个字符,谢谢您的合作!>&2
EXIT 1
:NODELETE
echo 【系统提示】:只有管理员才能删除文件夹或文件,谢谢您的合作!>&2
EXIT 1
2、pre-revprop-change
@ECHO
REM Subversion Hooks Script For Windows
REM 只允许修改自己的日志和不允许 增加、删除 等操作。
REM 参数
set SVN_BINDIR=C:\"Program Files"\"VisualSVN Server"\bin
set REPOS=%1
set REV=%2
set USER=%3
set PROPNAME=%4
set ACTION=%5
REM 设置超级用户,超级用户可以修改其他人的日志,其他人只能修改自己的日志
set SUPERUSER=admin
REM 当前只允许修改日志
if /I not '%PROPNAME%'=='svn:log' goto ERROR_PROPNAME
REM 当前不允许 增加、删除 等操作
if /I not '%ACTION%'=='M' goto ERROR_ACTION
REM 当前只允许修改自己的日志
for /f "usebackq" %%k in (`%SVN_BINDIR%\svnlook author %REPOS% -r %REV%`) do @set VAR=%%k
set RIGHTUSER=0
if "%3" == "%SUPERUSER%" set RIGHTUSER=1
if "%3" == "%VAR%" set RIGHTUSER=1
if %RIGHTUSER% == 0 goto ERROR_USER
goto :SUCCESS_EXIT
:SUCCESS_EXIT
exit 0
:ERROR_USER
echo 【系统提示】:用户只允许修改自己的日志信息。 >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo 【系统提示】:用户只允许修改日志,不能修改日志作者。 >&2
goto ERROR_EXIT
:ERROR_ACTION
echo 【系统提示】:用户不允许 增加、删除 等操作。 >&2
goto ERROR_EXIT
:ERROR_EXIT
exit 1