使用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什么意思就不多说了!
类似这样的一个目录,一个是修改前的,一个是修改后,然后再根据对比修改的进行移植,是不是很方便!
废话少说,直接上代码:
#!/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什么意思就不多说了!
相关文章推荐
- DOM Document节点类型详解
- android 实现全屏
- GDB常用命令
- Android基础之四种枚举Context.MODE_PRIVATE
- 路径问题
- android 定时器实现一
- TQ2440 学习笔记—— 34、移植 Linux 内核【 Makefile 分析 】
- Cocos2d-JS 热更新
- Unity手游优化总概
- JSP学习笔记(十):面试题1
- Servlet和Cookie综合应用
- 关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案
- 魅族Smart Bar 适配问题
- ja_charity模板研究
- 程序员网站
- swift 基础语法知识
- c++ for_each 实现原理英文原版转载( Conditional Love: FOREACH Redux)
- 亲历面试题
- 【FPGA】时钟分频设计
- activity的四种启动模式