强制写日志才能提交代码有两种方法,一种是通过SVN客户端软件,简单方便,但只能针对特定的客户端。第二种是通过修改SVN服务器的钩子脚本,对所有的SVN客户端均有效,但需要获取SVN服务器管理权限。
修改SVN客户端的方法(以TortoiseSVN为例)
TortoiseSVN 使用属性来控制它的一些特性。这其中有一个 tsvn:logminsize 属性。在需要修改工作副本,右键到properties选定,出现如下图所示
点new按钮,出现如图
选择图中的tsvn:logminsize属性,设置属性值就是最小日志长度。在提交前如果日志的长度没有达到最小长度的要求,提交按钮将是灰色,表示不能提交。
在SVN服务器修改写日志钩子脚本(以Visual SVN Server为例)
在服务器端的代码仓库的项目下面有一个hooks文件夹,将下面的代码存为pre-commit.bat放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。(如果你下载使用,需要修改SVN_BINDIR为你的Subversion安装的程序目录),此其实是一个批处理文件,如果中间出现语法错可以参考批处理语法更改。
@echo off set SVN_BINDIR=d:\Subversion\bin (此处需要修改为你的svn安装目录)
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
%SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo Empty log message not allowed. Commit aborted! 1>&2
exit 1
PS:每个需要强制写日志提交的项目都需要将此脚本(批处理文件),替换掉,没有替换的项目将不会强制需要写日志。