[color=red][size=large]以下代码部分来自网上[/size][/color]
用VBS脚本检查提交log是否足够(长)
pre-commit.bat内容
pre-commit.vbs代码
[color=red]注意VBS代码文件的保存格式使用UNICODE,不然出现乱码,命令行工具需要在系统PATH路径中,否则需要全路径[/color]
用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
[color=red]注意VBS代码文件的保存格式使用UNICODE,不然出现乱码,命令行工具需要在系统PATH路径中,否则需要全路径[/color]