为svn添加hook脚本
为了维护svn的log,方便后续查找某个模块的svn提交操作,今天终于动手写了一次svn的hook脚本。虽说功能不复杂,但是经历还是有点波折。特此记录
目标:输入的注释要遵照格式:[模块名]操作日志,其中模块名不少于4个字符(或2个汉字),操作日志不少于10个字符(或5个汉字)
由于公司的svnserver是在windows机器上,所以需要编辑pre-commit.bat
::/
@echo off
setlocal
set REPOS=%1
set TXN=%2
::svnlook log %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}" 1>&2
::rem 保证输入8个字符
::svnlook log %REPOS% -t %TXN% | findstr "........" > nul
::if %errorlevel% gtr 0 goto :err_action
rem 按照格式输入
svnlook log %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}" | grep -E "^\[.{3}.*\].{10}.*" > nul
if %errorlevel% gtr 0 goto :err_action1
rem 过滤空格字符
svnlook log %REPOS% -t %TXN% | findstr /ic:" " > nul
if %errorlevel% gtr 0 goto :success
:::err_action
::echo 输入的注释不少于 8 个字符说明(或 4 个汉字) >&2
:err_action1
echo 输入的注释要遵照格式:[模块名]操作日志,其中模块名不少于4个字符(或2个汉字),操作日志不少于10个字符(或5个汉字) >&2
goto :err_exit
:err_exit
exit 1
:success
exit 0
::/
走过的坑:
1.windows下的findstr对正则表达式的支持不够全面,对于方括号的匹配始终没有找到解决办法,最后干脆用linux下的工具来实现
2.找到windows版的grep和awk工具,放到系统盘的目录有讲究,32位系统的话放到c:\windows\system32下,64位系统需要放到C:\Windows\SysWOW64,否则会报找不到命令的错误
3.svn的日志是一行一行提交的,所以需要串成一行字符串来做处理
为svn添加hook脚本相关推荐
- 使用JScript设置SVN客户端hook
作者:朱金灿 来源:http://blog.csdn.net/clever101 关于什么叫SVN hook,请参考这篇文章:从传统的 关于SVNHooks(钩子)的使用,这里不作详述. 设置SVN客 ...
- 如何在内部 Stash 服务器上添加 hook
关于 hook 所谓的 hook 就是存在于.git/hooks/ 目录下的一些脚本文件(shell.Python.Ruby.Perl 皆可),这些脚本文件可以在某些 git 操作执行之前或者之后触发 ...
- JavaScript常用的Hook脚本
JavaScript常用的Hook脚本 本文Hook脚本 来自 包子 页面最早加载代码Hook时机# 在source里 用dom事件断点的script断点 然后刷新网页,就会断在第一个js标签,这时候 ...
- 动态引入/添加js脚本
前言 动态添加脚本到页面中 动态引入/添加js脚本 var script=document.createElement("script"); script.type="t ...
- centos6+ 将程序 注册到 service进行启动 停止 重启等:以nginx为例,添加nginx脚本
service的运行过程.以network为例:service network start. 首先,service 会去/etc/init.d下寻找network脚本,start是networking ...
- 数字IC设计随笔之一(Verdi自动添加波形脚本应用)
Verdi自动添加波形脚本应用 在刚接触verdi时,每次查看波形都需要重新加载一遍,写了简单的脚本用于实现波形加载,没想到下载需求挺多,也有私信问如何使用,在这里将做简单的说明. 脚本有三个文件,分 ...
- Iptables自动添加黑名单脚本
IPtables自动添加黑名单脚本 1.脚本需求 登陆服务器日志/var/log/secure 检测检查日志中认证失败的行以及频繁发送请求的IP地址(失败条件可自行添加) 添加ip进iptables防 ...
- 宝塔linux shell定时访问url,bt(宝塔)面板添加shell 脚本通过nginx日志封访问频率过高的IP...
额,这篇文章是bt(宝塔)面板来写的文章,其他的程序如果是wdcp管理面板也有添加shell脚本的功能,大鸟自己用的是bt(宝塔)面板,所以说说如何添加shell 脚本通过nginx日志封访问频率过高 ...
- 详细注释版的ABAQUS COH2D4单元批量添加Python脚本
详细注释版的ABAQUS COH2D4单元批量添加Python脚本 ABAQUS Cohesive单元批量添加脚本程序-附详细注释版: #本程序只适用于二维问题,对于三维COH3D8的批量嵌入只需要转 ...
最新文章
- 【ACM】杭电OJ 2023
- 同时测试多个服务是否存活的脚本[shell和perl]
- 线程同步——内核对象实现线程同步——等待函数
- 【BZOJ 3729】3729: Gty的游戏 (Splay维护dfs序+博弈)
- 开源库 Natasha2016 ,让IL编程跑起来
- C#LeetCode刷题之#674-最长连续递增序列( Longest Continuous Increasing Subsequence)
- leetcode之二叉树的层序遍历
- mysql更改执行计划_11g中 connect by 语句执行计划改变
- oracle:10g下载地址(转载)
- 人类为什么不会被人工智能取代?
- 笔记:STM32的ADC参考电压与参照电压(电源监测)
- 获取服务器端的webapps路径
- 买天猫网店转让成为电商创业新趋势
- 软件打开文件夹后闪退
- Python使用pyecharts库制作桑基图
- SF25 | 日内交易策略开发(一)黄金日内交易模型
- soul网关mysql8_深度解析 Soul 网关——数据同步
- 英语语法汇总(2.冠词)
- 常用眼底图像数据集简介及下载--糖尿病视网膜病变 EyePacs,APTOS2019,STARE数据集
- 数字化如何助力品牌发展,高端茶品牌竹叶青告诉你
热门文章
- 隆重推荐kmplayer播放器——我的最爱播放器
- Mac电脑使用终端快速进入mysql命令行的方法(超详细)
- vue3.0项目中使用mitt进行组件传值
- 利用Debug Api 获得QQ2007密码
- 【每日1刷系列】软件测试常见面试题—深层概念
- 计算机配置管理模块mmc无法,Windows10提示MMC无法创建管理单元的解决方案
- turn.js 异步加载实现翻书效果
- CANopen协议理解
- hibernate.validator.constraints.NotEmpty鏍¢獙璇锋眰鍙傛暟鎶ラ敊java.lang.NoClassDefFoundError- javax-el-Propert
- Appletv3 到手试用 ,并推荐美剧一部