Svn的钩子配置使用

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


版权声明:本文为weixin_44667636原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。