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

近期检查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钩子限制日志长度和提交的文件类型

时间: 2024-10-15 07:24:13

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

利用git钩子,使用python语言获取提交的文件列表

项目有个需求,需要获取push到远程版本库的文件列表,并对文件进行特定分析.很自然的想到,要利用git钩子来触发一个脚本,实现获取文件列表的功能.比较着急使用该功能,就用python配合一些git命令写了一个脚本出来,等想到更好的方法后再对脚本进行修改. #!/usr/bin/env python #coding=utf-8 ''' 该脚本在pre-receive或post-receive钩子中被调用,也可以直接将该文件作为git的钩子使用 若钩子为shell脚本,则需要加入以下代码调用该脚本:

[转] 利用git钩子,使用python语言获取提交的文件列表

项目有个需求,需要获取push到远程版本库的文件列表,并对文件进行特定分析.很自然的想到,要利用git钩子来触发一个脚本,实现获取文件列表的功能.比较着急使用该功能,就用python配合一些git命令写了一个脚本出来,等想到更好的方法后再对脚本进行修改. #!/usr/bin/env python #coding=utf-8 ''' 该脚本在pre-receive或post-receive钩子中被调用,也可以直接将该文件作为git的钩子使用 若钩子为shell脚本,则需要加入以下代码调用该脚本:

复印机出现(工作执行不当,请检查日志)的解决办法

复印机出现(工作执行不当,请检查日志)的解决办法: 查看复印机的ip地址 打开浏览器,输入复印机的ip地址 点击进入"扫描","程序" 4.删除之前的程序,重新创建一个新的(记得要跟之前的配置一样,最好截下图) 5.删除完以后,点击"新注册"."SMB",下一步. 6.然后按照之前的配置,一一对照即可.

log4j学习(二)不同类的日志输出到不同的文件

目的:一个应用中有两个不同作用的后台服务,我们需要把他们的日志分开,存放到2个不同的日志文件中. 办法:需要在log4j.properties文件中配置两个不同的logger和对应的appender log4j.logger.logger1=debug,appender1 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.File=C:/Users/yang/Desktop/testpr

2.1-Apache不记录指定文件类型日志

在apache访问日志中,默认会记录所有动作.包括本地一些静态小图片,从而日志变得繁多臃肿. 这时我们可以指定,不记录指定文件类型的日志,来达到只记录我们想要的日志. 配置步骤: 1:标记指定文件类型 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/src/Discuz" ServerName www.llzdwyp.com ServerAlias www.wyp.com S

nginx不记录指定文件类型的日志

1.指定记录文件日志记录的内容. vim /usr/local/nginx/conf/nginx.conf如下部分: log_format dd '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; 其中dd是指日志格式的名字,可修改.2.在虚拟主机配置文件中,指

1.9-nginx不记录指定文件类型日志

nginx的日志记录和格式,在主配置文件中有配置 vim /usr/local/nginx/conf/nginx.conf 中这一行 log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; combined_re

ip列表中找到具体某个ip的所有访问日志并生成对应的文件

#!/bin/sh # 功能:从ip列表中找到具体某个ip的所有访问日志并生成对应的文件 #      # mkdir  handle > com.ip.txt function handle(){         #echo "egrep "$1"  0602.log  > handle/$n.txt"         egrep "$1"  0602.log  > handle/$1.txt         time=`wc

apache日志切割与不记录指定文件类型日志

1.# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 修改日志文件为: ErrorLog "logs/test.com-error_log"       错误日志 CustomLog "logs/test.com-access_log" combined  访问日志  相对路径 Apache的common日志格式定义: # vim /usr/local/apache2/conf/httpd.conf <