- 注册时间
 - 2012-11-28
 - 最后登录
 - 2021-2-12
 - 阅读权限
 - 200
 - 积分
 - 3774
 - 精华
 - 0
 - 帖子
 - 116
  
 
 
 
    
 
ta_mind  | mb_qb7 2013-3-19 01:56 | 
|---|
 
  classn_01: 366 classn_02 [LV.9]以坛为家II 
 | 
我们的svn服务器是使用windows平台的VisualSVN Server,有时SVN提交之后,发现忘记写提交说明了,这时需要修改日志信息,然后就报错了: 
 
 
错误提示的意思说Repositories不接受修改日志,需要要创建一个 pre-revpro-change hook才行,问了度娘,搞清楚了。  
hook,顾名思义,就是svn在执行一个动作之前调用的用户自己定义代码(用户没有自定义的情况下就使用默认设置)。这个代码在windows下是bat脚本或exe程序,在Linux下是shell或Python脚本。 
visualSVN Server每个Repositories下都有一个hooks文件夹,如下图,已经有一堆tmpl文件,这些文件其实就是linux 的shell脚本模板,pre-revpro-change.tmpl就是linux版的pre-revprop-change hook的模板,在linux下赋予执行权限就可以使用。  
 
 
但是VisualSVN server运行在Windows平台,所以这些hook脚本是不可能能执行的。但只要照着这些hook模板代码的逻辑用bat脚本重写这些脚本,就可以实现windows下的hook.  
pre-revprop-change.tmpl模板的代码是这样的: 
REPOS="$1" 
REV="$2" 
USER="$3" 
PROPNAME="$4" 
ACTION="$5" 
 
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi 
 
echo "Changing revision properties other than svn:log is prohibited" >&2 
exit 1 
重写太麻烦了,在网找到了对应的bat脚本pre-revprop-change.bat,将这个脚本放到hooks文件夹下,就可以了。 
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 
关于设置hook脚本,如果你觉得复制脚本到hooks文件夹挺麻烦,在VisualSVN server上还有更简单的办法,打开VisualSVN Server控制台界面,如下图点开一个Repositories的Properties\Hooks界面  
 
  
选中下图红框的Pre-revision property change hook,点击Edit编辑  
 
  
将前面的脚本如下图复制进来点OK就可以了。  
 
 
参考:  
《SVN设置pre-commit和pre-revprop-change钩子》  
http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/  
http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ 
 
 |   
- 
0.jpg
(29.16 KB, 下载次数: 1955)
 
 
 
 
 
 
- 
1.jpg
(80.5 KB, 下载次数: 1990)
 
 
 
 
 
 
- 
2.jpg
(17.35 KB, 下载次数: 1942)
 
 
 
 
 
 
- 
3.jpg
(17.39 KB, 下载次数: 1940)
 
 
 
 
 
 
- 
4.jpg
(21.33 KB, 下载次数: 1926)
 
 
 
 
 
 
 
 
  
 |