1、禁止删除操作
内容如下:
@echo off
setlocal
set Repos=%1
set TXN=%2
set SCM=SCMID
svnlook author -t "%TXN%" "%Repos%" | findstr "%SCM%"
IF %ERRORLEVEL% gtr 0 goto check
exit 0
:check
svnlook changed -t "%TXN%" "%Repos%" | findstr "^D"
if %ERRORLEVEL% == 0 goto err
pause
exit 0
:err
echo 您无法删除文件,请获取删除权限 1>&2
pause
exit 1
2、提交必须填写日志
内容如下:
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 5 characters
svnlook log "%REPOS%" -t "%TXN%" |findstr ".........." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 提交必须填写日志!>&2
exit
可修改所有人的日志信息
3、修改日志信息可修改所有人的(pre-revision property-change hook)
1.在VisualSVN Server中,选中需要修改记录的代码仓库,右键选择属性
2.切换到hooks标签页,编辑pre-revisionproperty-change hook的内容:
内容如下:
SET REPOS="%1"
SET REV="%2"
SET USER="%3"
SET PROPNAME="%4"
SET ACTION="%5"
IF %ACTION% == "M" (IF %PROPNAME% == "svn:log" (EXIT 0))
IF %ACTION% == "M" (IF %PROPNAME% == "svn:author" (EXIT 0))
ECHO "Changing revision properties %PROPNAME% is prohibited" >&2
EXIT 1
4、只允许修改自己的日志信息(pre-revision property-change hook)
1.在VisualSVN Server中,选中需要修改记录的代码仓库,右键选择属性,切换到hooks标签页,编辑pre-revisionproperty-change hook的内容:
内容如下:
SET REPOS="%1"
SET REV="%2"
SET USER="%3"
SET PROPNAME="%4"
SET ACTION="%5"
for /f "usebackq" %%k in (`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
:ERROR_USER
echo 只允许用户修改自己的日志 >&2
goto ERROR_EXIT
:ERROR_EXIT
exit 1
:SUCCESS_EXIT
exit 0
5、强制编写log message(Pre-commit hook)
pre-commit是在点击“提交”对话框上的“确定”时执行,即真正的提交活动时执行
1.在VisualSVN Server中,选中需要修改记录的代码仓库,右键选择属性,切换到hooks标签页,编辑“Pre-commit hook”的内容
内容如下:
@echo off
set SVN_BINDIR="C:\Program Files\VisualSVN Server\bin"
setlocal
rem check that logmessage contains at least 10 characters
%SVN_BINDIR%\svnlook log %1 -t %2 | findstr ".........." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 请在Recent Message输入框中填写至少10个字符(5个汉字)的说明,否则不能对SVN作任何变更! 1>&2
exit 1