``
svn log -r $rev1:$rev2 -v \
|egrep '^r[0-9]+ |^s+A |^s+M |^s+D ' \
|awk '{ if($0 ~ /^r/) {rev = $1;} else { if($1 == "M") $1 = "A"; print rev" "$1" "$2; }}' \
|sort -r -t ' ' -k3 -k2 \
|uniq -f1 \
|sort -t ' ' -k1 \
|awk '{print $1":"$2":"$3}' \
|sed "s#:$curr_url/#:$svn_dir/#" \
|egrep "$svn_dir" \
|awk 'BEGIN { print "#revision:A/D/C:src_file[:dest_dir]" } {print}' > $diff_name
上面这一段是SHELL脚本,用来导出SVN不同版本的差异列表。
现在需要补充一个功能,原先功能是导出所有的差异变化表,但是有些差异文件(如配置文件)是不需要更新到生产环境,需要过滤掉。
假设现在有一个file_ignore.list的文件,一行一条,如
/home/www/common/config/db_config.php
/home/www/crond/config/inc_crond.php
代表上面两个文件在导出差异变化时被过滤掉。
现假设:在红底白字(|egrep "$svn_dir" )那部分后得到的结果是:
r8596:A:/home/www/common/config/db_config.php
r8596:A:/home/www/crond/config/inc_crond.php
r8596:A:/home/www/recruitmng/model/recruitmng_dao.class.php
r8596:A:/home/www/crond/crond_save_sms_process_log.php
r8596:A:/home/www/cfg/model/CfgDictionaryItemDao.class.php
添加了过滤功能后,希望得到的结果是:
r8596:A:/home/www/recruitmng/model/recruitmng_dao.class.php
r8596:A:/home/www/crond/crond_save_sms_process_log.php
r8596:A:/home/www/cfg/model/CfgDictionaryItemDao.class.php
list=(`cat file_ignore.list`)
cat file_list.txt|while read line; do
file_path=`echo $line|awk -F: '{print $NF}'`
echo "${list[@]}" | grep -q "$file_path" || echo $line
done
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。