放飞梦想

蒋函夏的个人博客

« 终于可以上网了重做系统 »

【转】SVN在Windows下其他有用的钩子

1,强制写日志

在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:
将下面的代码存为放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。(如果你下载使用,需要修改SVN_BINDIR为你的Subversion安装的程序目录)

@echo off
set SVN_BINDIR=d:\Subversion\bin
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

注:修改自Subversion官方网站。


2,可以修改历史日志
历史上的日志写的不好,我们希望修改,默认对Subversion是不允许的,并且会提示需要创建post-revprop-change钩子。最简单的方式是创建一个空白的post-revprop-change.bat文件放到版本库的hooks目录下,但是这种方式不够严格,用户具备了修改所有属性的权利,例如修改作者的权利(可以提交垃圾然后栽赃嫁祸了)。所以要限制用户只能修改日志,所以有了下面的代码,将其存为pre-revprop-change.bat放到版本库的hooks目录下即可。

@ECHO OFF

set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%action%'=='M' goto ERROR_ACTION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)

if '%bIsEmpty%'=='true' goto ERROR_EMPTY
goto :eof
:ERROR_EMPTY
echo Empty svn:log properties are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit 1
  • 相关文章:
  • quote 1.jianghanxia
  • 本来是用Windows Live Write写的,但是格式乱的一塌糊涂,算了,以后不用离线工具算了……[razz]
  • 2007-2-13 23:05:53 回复该留言
  • quote 2.hesicong
  • 不错不错,使用离线工具还是很麻烦,格式很容易就乱了,好像跟换行有关系。硬回车和软回车是不一样的。我还是觉得直接写比较好。格式自己控制。只是记着随时存盘就对了。
  • 2007-2-14 22:56:43 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710 Code detection by Codefense  theme by BokeZhuti


Copyright jianghanxia. Some Rights Reserved.
蜀ICP备05008515号