#!/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

最新文章

  1. C#异常处理性能测试
  2. 在ScrollView下加入的组件,不能自动扩展到屏幕高度
  3. (5)分布式下的爬虫Scrapy应该如何做-windows下的redis的安装与配置
  4. BZOJ-1070 修车 最小费用最大流+拆点+略坑建图
  5. apache AddDefaultCharset
  6. js继承实例
  7. centos 挂载windows共享目录
  8. Python Object Graphs — objgraph 1.7.2 documentation
  9. 关于接收POST请求 $GLOBALS['HTTP_RAW_POST_DATA']
  10. win32 htmlayout点击按钮创建新窗口,以及按钮图片样式
  11. 中缀表达式变后缀表达式、后缀表达式(逆波兰)求值(python版本)
  12. oracle 导入/导出遇到的 问题总结
  13. 重温《STL源码剖析》笔记 第六、七、八章 next_permutation (字典序)
  14. MySQL 复制 - 性能与扩展性的基石 2:部署及其配置
  15. EF基于方法的查询语法
  16. 用nodejs搭建类似于C++的服务器后台.类似网易pomelo
  17. awk 内置函数列表
  18. Luogu P2426 【删数】
  19. Linux Centos下查看cpu、磁盘、内存使用情况,关闭MySQL日志
  20. 数据结构与算法Java描述 队列

热门文章

  1. 开源性能测试工具——jemeter介绍+安装说明
  2. Java 大数
  3. iTOP-4412开发板p2p视频
  4. 一个奇怪的Java集合问题
  5. [1,2,3].forEach(alert);这样的写法有什么利和弊吗?
  6. android.mk-编译文件学习(转载)
  7. 11G、12C Data Guard Physical Standby Switchover转换参考手册
  8. vue <input type="file">上传图片、预览、删除
  9. Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日
  10. Oracle 带回滚的存储过程