sdk-hwV1.3/lichee/rtos-hal/tools/pre-commit

65 lines
1.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
#删除注释的函数
function del_comment_file()
{
#delete the comment line begin with '//comment'
sed -i '/^[ \t]*\/\//d' $1 #i选项表示直接对文件而不是副本操作
#delete the commnet line end with '//comment'
sed -i 's/\/\/[^\"]*//' $1
#delete the comment only occupied one line '/* commnet */'
sed -i 's/\/\*.*\*\// /' $1
#delete the comment that occupied many lines '/*comment
# *comment
# */
sed -i '/^[ \t]*\/\*/,/.*\*\//d' $1
}
#有需要时需要修改keyword.dat文件的路径
keywordpath=.git/hooks/keyword.dat
#逐个检查即将commit的文件
for FILE in `git diff --name-only --cached`; do
# 只对.c和.h文件进行检查
dirfile=$(dirname $FILE)
if [[ $FILE != *".c"*] && [$FILE != *".h"* ]] ; then
continue
fi
#忽略来自include/osal文件夹里面的文件
if [ $dirfile == include/osal ] ; then
continue
fi
#将文件暂存至同目录的副本tem.c中
cp ${FILE} ${dirfile}/tem.c
temcpath=${dirfile}/tem.c
#删除副本tem.c中的注释
del_comment_file ${temcpath}
#逐行检查所给关键词列表文件按keyword.dat中是否出现在即将commit的文件中
for line in $(sed '/^#.*\|^$/d' ${keywordpath}); do
#按特定字符串查找文本
grep "\<${line}\>" ${temcpath} 2>&1 >/dev/null
if [ $? -eq 0 ]; then
# 输出报错信息
echo -e "\033[31m${FILE}文件中包含了关键字${line}请重新修改后再提交\033[0m"
#删除创建的副本
rm -f ${dirfile}/tem.c
exit 1
fi
done
#删除创建的副本
rm -f ${dirfile}/tem.c
done
exit