码迷,mamicode.com
首页 > 其他好文 > 详细

工作随笔——pre-commit钩子限制日志长度和提交的文件类型

时间:2014-08-01 19:03:32      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   文件   art   

近期检查SVN时发现备份好的文件体积异常庞大。才跑2个月备份出来的大小就有4G多。仔细查询发现很多很多IDE自动生成的二进制文件。。。我类个去。好吧,开发不自觉就只有强制限制了。

google的时候发现这篇文章:http://blog.csdn.net/clever101/article/details/8560833

自己动手丰衣足食。脚本如下:

#!/bin/bash
export LANG="zh_CN.UTF-8"  #确保中文日志显示正常,便于统计日志
REPOS="$1"
TXN="$2"
#限制日志长度
LENGTH=10

SVNLOOK="/usr/local/csvn/bin/svnlook"
BLACKLIST="target  build  classes  bin/target  .*  *.iml  *.ipr  *.iws  *.class " 

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}`
# 文件黑名单过滤 
# 过滤文件夹
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "/target/"`"  #文件夹前后必须有/,否则匹配会有误伤
blacklist_exit
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "/build/"`"
blacklist_exit
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "/classes/"`"
blacklist_exit
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "/bin/target/"`"
blacklist_exit
# 过滤所有已点开头的文件和文件夹
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "/\."`"
blacklist_exit
# 过滤文件尾缀
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "\.iml$"`"
blacklist_exit
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "\.ipr$"`"
blacklist_exit
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "\.iws$"`"
blacklist_exit
INBLACKLIST="`${SVNLOOK} changed -t "${TXN}" "${REPOS}" | grep "\.class$"`"
blacklist_exit

# 判断日志长度是否满足要求
if [ "${LOGMSG_LENGTH}" -lt ${LENGTH} ];then
    error_exit
fi

exit 0

不知道为啥,不能在返回的日志中加入中文,否则小乌龟报编码无法解析。去官方询问也没人回答,蛋疼。

 

工作随笔——pre-commit钩子限制日志长度和提交的文件类型,布布扣,bubuko.com

工作随笔——pre-commit钩子限制日志长度和提交的文件类型

标签:style   blog   http   color   os   io   文件   art   

原文地址:http://www.cnblogs.com/zz0412/p/3885333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!