svn-hook学习备忘-
以下代码部分来自网上
用VBS脚本检查提交log是否足够(长)
pre-commit.bat内容
:: begin of pre-commit.bat:: 阻止空日志信息的版本的提交@echo offSETLOCALSET REPOS=%1SET TXN=%2cscript D:\svn\repository\demo\hooks\pre-commit.vbs "%REPOS%" "%TXN%":: end of pre-commit.bat
'必须显式声明变量Option ExplicitPrivate ArgsPublic wshShell,logExecSet wshShell = WScript.CreateObject("WScript.Shell")Set Args = WScript.ArgumentsDim MaxArgsMaxArgs = 2'调用主要处理流程Call Main'*******************************************************************************'Main()过程定义'*******************************************************************************Private Sub Main()Call ArgsErrCall CheckLogEnd Sub 'Main()'*******************************************************************************'出错退出函数,统一进行资源释放'*******************************************************************************private sub ErrExit()Set Args = NothingSet wshShell = NothingSet logExec =Nothing'错误返回WScript.Quit (1)end sub 'ErrExit()'*******************************************************************************'参数出错处理'*******************************************************************************Private Sub ArgsErr() If (Args.Count < MaxArgs) Then '在系统信息中记录此错误信息(事件查看器) wshShell.LogEvent 1, "缺少参数个数!" '错误信息输出到客户端 WScript.StdErr.WriteLine("缺少参数个数!") '错误返回 Call ErrExit() End IfEnd Sub 'ArgsErr()'*******************************************************************************'日志检查'*******************************************************************************Private Sub CheckLog()Dim sReposPath, sRevision, sCommand, sLogsReposPath = cstr(Args(0))sRevision = cstr(Args(1))'合成svnlook 命令 sCommand = "D:/svn/bin/svnlook.exe log " + sReposPath + " -t " + sRevisionSet logExec = wshShell.Exec(sCommand)'读取svnlook log命令返回结果Do While Not logExec.StdOut.AtEndOfStream sLog = logExec.StdOut.ReadAll()loopif len(sLog)<=10 then WScript.StdErr.WriteLine("备注太短,至少10字!") Call ErrExit()end ifEnd Sub