svn hook pre-commit
#!/bin/bash
export LANG="zh_CN.UTF-8" #确保中文日志显示正常,便于统计日志
REPOS="$1"
TXN="$2"
#限制日志长度
LENGTH=10
#exit 0
SVNLOOK="/usr/bin/svnlook"
BLACKLIST=".* *.o *.chw *.pck ~\$*"
function error_exit(){
echo -e "1.Not allowed empty log " >&2
echo -e "2.Logs must be greater than ${LENGTH} characters or chinese" >&2
exit 1
}
function blacklist_exit(){
if [ ! -z "${INBLACKLIST}" ] ;then
echo -e "some files in the blacklist , please cheack again !" >&2
echo -e "blacklist:\n ${BLACKLIST}" >&2
exit 1
fi
}
# 获取字符数量(包括换行符)
TEMP_LENGTH=`${SVNLOOK} log -t "${TXN}" "${REPOS}"|sed 's/\s*$//g'|sed 's/^\s*//g'| wc --chars`
# 统计换行符
TEMP_LINE=`${SVNLOOK} log -t "${TXN}" "${REPOS}"| wc --lines`
# 真实字符数量
LOGMSG_LENGTH=`expr ${TEMP_LENGTH} - ${TEMP_LINE}`
################################## 检查变更文件 ##################################
changed_files=$(${SVNLOOK} changed -t "${TXN}" "${REPOS}")
# 文件黑名单过滤
# 过滤文件夹
#INBLACKLIST=$(echo ${changed_files} | grep "/target/"`" #文件夹前后必须有/,否则匹配会有误伤
#blacklist_exit
################################## 过滤prefix ##################################
# 过滤所有以点开头的文件和文件夹
INBLACKLIST=$(echo ${changed_files} | grep "/\.")
blacklist_exit
# 过滤所有office的临时文件
INBLACKLIST=$(echo ${changed_files} | grep "~\\$")
blacklist_exit
################################## 过滤suffix ##################################
# 过滤文件尾缀,.chw, .o, .pck
INBLACKLIST=$(echo ${changed_files} | grep "\.chw$")
blacklist_exit
INBLACKLIST=$(echo ${changed_files} | grep "\.o$")
blacklist_exit
INBLACKLIST=$(echo ${changed_files} | grep "\.pck$")
blacklist_exit
# 判断日志长度是否满足要求
if [ "${LOGMSG_LENGTH}" -lt ${LENGTH} ];then
error_exit
fi
exit 0
最新文章
- C#异常处理性能测试
- 在ScrollView下加入的组件,不能自动扩展到屏幕高度
- (5)分布式下的爬虫Scrapy应该如何做-windows下的redis的安装与配置
- BZOJ-1070 修车 最小费用最大流+拆点+略坑建图
- apache AddDefaultCharset
- js继承实例
- centos 挂载windows共享目录
- Python Object Graphs — objgraph 1.7.2 documentation
- 关于接收POST请求 $GLOBALS['HTTP_RAW_POST_DATA']
- win32 htmlayout点击按钮创建新窗口,以及按钮图片样式
- 中缀表达式变后缀表达式、后缀表达式(逆波兰)求值(python版本)
- oracle 导入/导出遇到的 问题总结
- 重温《STL源码剖析》笔记 第六、七、八章 next_permutation (字典序)
- MySQL 复制 - 性能与扩展性的基石 2:部署及其配置
- EF基于方法的查询语法
- 用nodejs搭建类似于C++的服务器后台.类似网易pomelo
- awk 内置函数列表
- Luogu P2426 【删数】
- Linux Centos下查看cpu、磁盘、内存使用情况,关闭MySQL日志
- 数据结构与算法Java描述 队列
热门文章
- 开源性能测试工具——jemeter介绍+安装说明
- Java 大数
- iTOP-4412开发板p2p视频
- 一个奇怪的Java集合问题
- [1,2,3].forEach(alert);这样的写法有什么利和弊吗?
- android.mk-编译文件学习(转载)
- 11G、12C Data Guard Physical Standby Switchover转换参考手册
- vue <;input type=";file";>;上传图片、预览、删除
- Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日
- Oracle 带回滚的存储过程