您的位置:首页 > 其它

使用git获取patch

2015-09-19 14:42 176 查看
因为经常进行代码移植,当移植在同一套代码上面进行移植,使用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什么意思就不多说了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: