svn-hook学习备忘-

以下代码部分来自网上
用VBS脚本检查提交log是否足够(长)
pre-commit.bat内容
:: begin of pre-commit.bat
:: 阻止空日志信息的版本的提交

@echo off

SETLOCAL

SET REPOS=%1
SET TXN=%2

cscript D:\svn\repository\demo\hooks\pre-commit.vbs "%REPOS%" "%TXN%"

:: end of pre-commit.bat

pre-commit.vbs代码
'必须显式声明变量
Option Explicit

Private Args
Public wshShell,logExec

Set wshShell = WScript.CreateObject("WScript.Shell")
Set Args = WScript.Arguments

Dim MaxArgs
MaxArgs = 2

'调用主要处理流程
Call Main

'*******************************************************************************
'Main()过程定义
'*******************************************************************************
Private Sub Main()

Call ArgsErr

Call CheckLog

End Sub 'Main()


'*******************************************************************************
'出错退出函数,统一进行资源释放
'*******************************************************************************
private sub ErrExit()

Set Args = Nothing
Set wshShell = Nothing
Set 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 If

End Sub 'ArgsErr()

'*******************************************************************************
'日志检查
'*******************************************************************************
Private Sub CheckLog()

Dim sReposPath, sRevision, sCommand, sLog

sReposPath = cstr(Args(0))
sRevision = cstr(Args(1))

'合成svnlook 命令 
sCommand = "D:/svn/bin/svnlook.exe log " + sReposPath + " -t " + sRevision

Set logExec = wshShell.Exec(sCommand)

'读取svnlook log命令返回结果
Do While Not logExec.StdOut.AtEndOfStream
     sLog = logExec.StdOut.ReadAll()
loop

if len(sLog)<=10 then
     WScript.StdErr.WriteLine("备注太短,至少10字!")
     Call ErrExit()
end if
End Sub

注意VBS代码文件的保存格式使用UNICODE,不然出现乱码,命令行工具需要在系统PATH路径中,否则需要全路径

你可能感兴趣的:(SVN,脚本)