svn per-commit钩子限制填写message、提交文件和文件夹类型

本文介绍了一个用于Subversion (SVN) 的预提交hook脚本,该脚本能够确保提交信息符合一定规范,并且可以排除特定类型的文件或目录,以提高版本控制系统的使用效率。

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

在csvn\data\repositories\具体项目\hooks文件夹下新增文件pre-commit.bak,文件内容如下:
=========================================================================

@echo off

rem SVN强制写注释的hooks脚本(Windows)
rem 文件名是: pre-commit.bat,放到repository/hooks目录下

setlocal
rem set SVN_BINDIR="E:\csvn\bin\svnlook.exe"
rem 若SVN Server服务端机器没有设置path变量,则用上述方法定义svnlook
set REPOS=%1
set TXN=%2

rem 检查是否提交日志,至少10个字符
svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto nolog

rem 检查是否提交日志,验证Jira Key
set path=%path%;E:\csvn\bin;C:\Program Files (x86)\GnuWin32\bin
svnlook log -t "%TXN%" "%REPOS%" | grep.exe "[A-Z]-[0-9]" > nul || goto invalid

rem 过滤文件及文件夹类型 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "suo$"
if %errorlevel% EQU 0 (goto SuffixError)  
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "user$"
if %errorlevel% EQU 0 (goto SuffixError)  
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "Thumbs.db$"
if %errorlevel% EQU 0 (goto SuffixError) 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "desktop.ini$"
if %errorlevel% EQU 0 (goto SuffixError) 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "\/bin\/"
if %errorlevel% EQU 0 (goto SuffixError)  
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "\/obj\/"
if %errorlevel% EQU 0 (goto SuffixError)
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "\/packages\/"
if %errorlevel% EQU 0 (goto SuffixError) 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "\/.vs\/"
if %errorlevel% EQU 0 (goto SuffixError) 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "~$"
if %errorlevel% EQU 0 (goto SuffixError) 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "vshost.exe$"
if %errorlevel% EQU 0 (goto SuffixError) 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "vshost.exe.config$"
if %errorlevel% EQU 0 (goto SuffixError) 
svnlook changed -t "%TXN%" "%REPOS%" | findstr /i "vshost.exe.manifest$"
if %errorlevel% EQU 0 (goto SuffixError)
exit 0

:SuffixError
echo bin、obj、packages、vs目录;*.suo、*.user、Thumbs.db、desktop.ini和vshost文件不允许上传,请忽略! 1>&2
exit 1

:nolog
echo svn message不能为空, 请填写JIRA系统相应的Key+主题! 例如: XDYY-1 系统性能测试。 1>&2
exit 1

:invalid
echo svn message未包含有效的Jira Key, 请填写正确的Jira Key+主题! 例如: XDYY-1 系统性能测试。 1>&2
exit 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值