目录
环境
系统:windows server 2012 R2
软件:VisualSVN Server Manager 3.9.1
前言
在项目开发中,只是口头上或者通过文档要求每个人仔细认真填写SVN提交日志以达到规范目的是不太靠谱的,通过设置和限制为开发人员提供方便并加以控制是必要的
客户端修改
1.在SVN项目根目录右键打开Properties
2.点击右下角New新建一条配置选项
3.在上方Property Name下拉菜单里面选择 tsvn:logtemplate,以我自己的项目提交模板为例,输入日志提交模板
【提交类型】: 功能制作/BUG/代码整理/解决编译错误/资源添加/资源修改/目录调整
【修改内容】:
【禅道链接】:
4.一路确定保存,点击提交,Message窗口就会自动出现模板设置的内容,把文件夹设置上传,其他人更新后点击提交时就都会弹出模板内容,这样便可以更加方便的修改
服务器修改
1.打开SVN Server Manager,选择想要增加审核机制的项目目录,右键选择Properties,切到Hooks窗口,双击Pre-commit hook打开编辑hook
2.针对开发人员各种不符合规则的行为(如日志无内容、用模板不修改直接提交等),我设置的hook内容如下
setlocal
set SVN_BINDIR="E:\Program Files\VisualSVN Server"
set REPOS=%1
set TXN=%2
rem 检查提交日志格式是否包含【提交类型】和【修改内容】
%SVN_BINDIR%\bin\svnlook log "%REPOS%" -t "%TXN%"|findstr "【提交类型】" > nul
if %errorlevel% gtr 0 goto err
%SVN_BINDIR%\bin\svnlook log "%REPOS%" -t "%TXN%"|findstr "【修改内容】" > nul
if %errorlevel% gtr 0 goto err
rem 检查提交日志是否在提交类型中选择了一项或几项,
rem 查找模板中最不可能同时出现的两个相邻的提交类型是否出现
%SVN_BINDIR%\bin\svnlook log "%REPOS%" -t "%TXN%"|findstr "解决编译错误/资源添加" > nul
if %errorlevel% equ 0 goto err1
rem 检查是否【修改内容】未填写
rem 符号解释:"."匹配一个任意字符(因我书写的模板中:后面有一个空格) "$"匹配行结束
%SVN_BINDIR%\bin\svnlook log "%REPOS%" -t "%TXN%"|findstr "【修改内容】:.$" > nul
if %errorlevel% equ 0 goto err1
exit 0
:err
echo 提交失败!必须包含【提交类型】和【修改内容】 1>&2
echo 【提交类型】必须从给定类型中选择一项 1>&2
echo 【修改内容】不能为空 1>&2
echo Commit Failed! Commit content length less than 4 characters 1>&2
exit 1
:err1
echo 提交失败!请认真填写提交内容! 1>&2
echo 【提交类型】必须从给定类型中选择一项 1>&2
echo 【修改内容】不能为空 1>&2
echo Commit Failed! Commit content length less than 4 characters 1>&2
exit 1
这样便可以在开发人员提交不符合规则的日志内容时弹出提交失败窗口,让开发人员重新修改日志内容