关于SVN Hooks(钩子)的使用 (5)

这篇博客介绍了如何利用VBS脚本来实现SVN的pre-commit钩子,用于检查提交时的日志注释长度。通过提供一个样例脚本,展示了如何在预提交交易时验证注释内容是否达到指定长度,以此确保提交质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用VBS实现pre-commit对提交注释的检查(样例实现的是对长度的检查)。

 

1.钩子调用脚本内容

    cscript.exe d:/pre-commit.vbs %1 %2

 

2.钩子处理脚本内容

 


'*******************************************************************************
'* NAME       : pre-lock.vbs
'* AUTHOR     : 杨瑞(OscarYang)
'* CREATED    : 2010-3-19
'*
'* PURPOSE    : 实现提交日志检查
'*
'*
'*              pre-commit hook arguments:
'*              [1] REPOS-PATH   (the path to this repository)
'*              [2] TXN-NAME     (the name of the txn about to be committed)
'*******************************************************************************

'必须显式声明变量
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 = "svnlook 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 ("日志信息不足!")
     Call ErrExit()
  end if
End Sub

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值