repo 修改代码比对 打包脚本

功能:repo管理多个git仓库时,通过该脚本将原代码文件和修改后的代码文件,按照目录结构打包,他人可通过文本比对工具查看代码改动情况

#!bin/bash

PWD_PATH=`pwd`
DSTDIR_NEW="$PWD_PATH/$1/new"
DSTDIR_OLD="$PWD_PATH/$1/old"
STATUS=0
GITPATH=
function call_m()
{
    if [ $STATUS -eq 0 ];then
        #STATUS状态为1表示开始对一个git project进行处理
        STATUS=1;
        cd $GITPATH;
        echo ">>>>>>>>>>>>>>>>>>>>> enter git project: $1  $STATUS"
    fi
    srcPath=$1
    dstPath=
    charToSearch='/';
    GITPATH2=
    let pos=`echo "srcPath" | awk -F ''$charToSearch'' '{printf "%d", length($0)-length($NF)}'`
    #echo "char $charToSearch lastpos is: $pos"
    if [ $pos != 0 ];then
        GITPATH2=${srcPath:0:$pos-1}
        echo $GITPATH2
    fi
    
    echo ---------copy opt----------  $1   $2       
    #echo pwd_path:`pwd`     
		#echo  srcPath_len:${#srcPath}

    if [ $2 != "del" ];then
    		dstPath="$DSTDIR_NEW/$GITPATH/$GITPATH2"
    		mkdir -p  ${dstPath}     
				cp  ${srcPath} ${dstPath}
    fi
    
    if [ $2 != "new" ];then        
        git stash;
    		dstPath="$DSTDIR_OLD/$GITPATH/$GITPATH2"
    		mkdir -p  ${dstPath}     
				cp  ${srcPath} ${dstPath}
        git stash pop stash@{0}
    fi   
}

function call_project()
{
    if [ $STATUS -eq 1 ];then
        cd $PWD_PATH;
        #STATUS状态为0表示完成一个git project的处理
        STATUS=0
        echo "<<<<<<<<<<<<<<<<<<<<< leave git project: $1  $STATUS"
    fi
    GITPATH="$1"
}

function code_cmp()
{
		#去掉文本中的彩色信息
    repo status | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" | sed "s/\x0f//g" > 1.txt

    while read myline
    do
        echo $myline;
        b=(${myline});
        
        #跳过指定的git project目录
				#echo -------/${b[0]}:${b[1]}
        #if [ ${b[1]} == "platform/vc0718p/uboot/" ];then
        #    continue;
        #fi
        
        #每个字段打印
				#echo ${b[0]} ${b[1]} ${b[2]}
				#每个字段的长度 
  			#echo ${#b[0]} ${#b[1]} ${#b[2]} 			
							
        if [ ${b[0]} == "-m" ];then          
            call_m ${b[1]} "mod"
        elif [ ${b[0]} == "--" ];then
            call_m ${b[1]} "new"
        elif [ ${b[0]} == "-d" ];then
            call_m ${b[1]} "del"            
        elif [ ${b[0]} == "M-" ];then
            call_m ${b[1]} "M"
        elif [ ${b[0]} == "project" ];then      	
            call_project ${b[1]}
        fi
        
    done < 1.txt
    cd $PWD_PATH
    rm 1.txt
}


echo "dhy : $# $0 $1"
if [ $# == 1 ] ; then
echo " e.g.: $0 code_cmp_copy"
    code_cmp
else
echo "
usage:
./pack_diffFile.sh code_0909
"
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值