赞
踩
因为经常进行代码移植,当移植在同一套代码上面进行移植,使用git自带的命令生成patch,再合入是最好不过的!但是如果你以前做的新功能,想从一个平台移植到另一个平台,这个时候使用git自带生成patch和合入patch就不方便了,例如从android4.4 移植到android L上面!那这个时候我们最想要的是类似:
类似这样的一个目录,一个是修改前的,一个是修改后,然后再根据对比修改的进行移植,是不是很方便!
废话少说,直接上代码:
#!/bin/bash
echo ./getpatch newshaid oldshaid
from_id=$1
to_id=$2
#echo $from_id
#echo $to_id
diffpath='patch/diff.log'
newpath='patch/new/'
oldpath='patch/old/'
rm -rf patch
mkdir -p $newpath
mkdir -p $oldpath
git diff $from_id $to_id --raw > $diffpath
#遍历修改的文件
cat $diffpath | while read line
do
#echo =====================================
#echo $line
OLD_IFS="$IFS"
IFS=" "
arr=($line)
IFS="$OLD_IFS"
#echo ${arr[4]}
filepath=${arr[4]##* }
#echo $filepath
newid=${arr[2]%%...}
#echo $newid
oldid=${arr[3]%%...}
#echo $oldid
if [ "$newid"x != "0000000"x ]; then
newfilepath=${newpath}${filepath}
echo $newfilepath
dirpath=${newfilepath%/*}
echo $dirpath
mkdir -p ${dirpath}
git cat-file -p $newid > ${newfilepath}
fi
if [ "$oldid"x != "0000000"x ]; then
oldfilepath=${oldpath}${filepath}
echo $oldfilepath
dirpath=${oldfilepath%/*}
echo $dirpath
mkdir -p ${dirpath}
git cat-file -p $oldid > ${oldfilepath}
fi
done
最后执行:
./getpatch newshaid oldshaid
newshaid和oldshaid什么意思就不多说了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。