git怎么实现过滤文件内容里的关键字,不允许提交?

比如PHP代码里的join,foreach里的sql?

白衣染霜花
浏览 416回答 4
4回答

湖上湖

用githook吧

回首忆惘然

项目内部的.git/hooks里面有很多git-hook的sample shell脚本。 通过判断commit的内容里有无相关禁词,来做是否提交。 #!/bin/bash if [ #有关键词 ]; then echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "" echo "禁止使用XXXX关键词代码!" echo "" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" exit 1 fi 当然,判断commit内容会比较复杂,需要先拿到commit内容,再判断。

富国沪深

换个思路通过忽略文件间接实现:单独弄个文件,把想忽略的内容放到里面,使用时代码中引入文件内容,gitignore 这个文件。

慕标琳琳

用别的方法实现了,虽然有点2.。。 //入口文件引入代码审查文件 if (is_file('./check_code.php')) { require_once('./check_code.php'); } check_code.php <?php $keyword_arr = array('join', 'JOIN'); $allow = 255; //目录中目前存在的join foreach ($keyword_arr as $value) { $cmd = 'grep -r --exclude-dir=Runtime '.$value.' * | wc -l'; $r = execInBackground($cmd); if($r>$allow){ exit('代码里包含的join查过额定数量'.$allow.',现为'.$r); } } function execInBackground($cmd) { $sum = 11; if (substr(php_uname(), 0, 7) == "Windows"){ $r = pclose(popen("start /B ". $cmd, "r")); } else { $r = exec($cmd . " > /dev/null &"); } return $r; } ?>
打开App,查看更多内容
随时随地看视频慕课网APP