1、强制写日志
在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:将下面的代码存为放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。
文件名:pre-commit-log.bat
1
2
3
4
5
6
7
8
9
10
11
|
@ echo off 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 Empty log message not allowed. Commit aborted! 1>&2 exit 1 |
2、可以修改历史日志
历史上的日志写的不好,我们希望修改,默认对Subversion是不允许的,并且会提示需要创建pre-revprop-change钩子。最简单的方式是创建一个空白的pre-revprop-change.bat文件放到版本库的hooks目录下,但是这种方式不够严格,用户具备了修改所有属性的权利,例如修改作者的权利(可以提交垃圾然后栽赃嫁祸了)。所以要限制用户只能修改日志,所以有了下面的代码,将其存为pre-revprop-change.bat放到版本库的hooks目录下即可。
文件名:pre-revprop-change.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
REM SVN pre-revprop-change hook allows edit of logmessages from TSVN setlocal set REPOS=%1 set REV=%2 set USER=%3 set PROPNAME=%4 set ACTION=%5 if not "%ACTION%" == "M" goto refuse if not "%PROPNAME%" == "svn:log" goto refuse goto OK :refuse echo Cann't set %PROPNAME%/%ACTION%, only svn:log is allowed 1>&2 endlocal exit 1 :OK endlocal exit 0 |
3、只允许用户修改自己的svn日志的钩子脚本
hooks目录下就存在一些钩子脚本的模板,用户可以作为参考。把pre-revprop-change.tmpl复制为pre-revprop-change.bat,再修改里面的脚本,钩子就设置好了。 (实现每人可以修改自己的log日志,而管理员可以任意修改。):
1
2
3
4
5
6
7
8
9
10
|
for /f "usebackq" %%k in (`svnlook author %1 -r%2`) do @ set var=%%k if "%3" == "%var%" goto test if "%3" == "li" goto test exit 1 : test if "%4" == "svn:log" exit 0 echo Property '%4' cannot be changed >&2 exit 1
|