Android源码新基线代码更新的方法

我们在Android项目的开发过程中,经常遇到源码SDK需要更新的情况。比如厂商会定期更新源码SDK,具体到我们就需要定期将厂商的这些更新代码合并进我们自己的项目中。而我们本地的项目代码因为持续的开发已经变更,此时直接去进行厂商代码的合并将变得困难:

a,代码变更,容易产生合并冲突;

b, Android源码的仓库有一千多个, 合并代码带来的工具量巨大

因此我们希望有一种简单点的代码合并方法。如下代码基线合并的方法供大家参考:

1,在本地Android SDK代码中找出我们开发过程中修改过的仓库。在源码路径执行:

a, repo forall -p -c 'git log --author=关键提交信息' | grep project >modify_branch.txt
b, awk -F[" "] '{print $2}' modify_branch.txt  > branch.txt

2, ,确保本地是一个干净的代码。在本地Android源码根目录执行:

repo forall -c "git checkout . && pwd"

注意此步骤会将本地代码的工作区修改代码checkout丢弃。建议合并基线重新拉取一套本地代码专门进行基线的合并工作

3,自动更新除修改仓库(步骤1中)的其他仓库的代码,在源码根目录执行:

repo forall -c "auto_update_branch.sh"

auto_update_branch.sh脚本内容:

#!/bin/bash
SDK_DIR="/media/XXXX"  //修改为本地Android源代码的路径
PWD_DIR=`pwd`
Updata_flag=Y

while read rows
do

if [ "$SDK_DIR/$rows" = "$PWD_DIR/" ]
then
echo "not work dir: `pwd`"
Updata_flag=N
fi

done < $SDK_DIR/branch.txt


if [ "$Updata_flag" = "Y" ]
then

echo "work dir: `pwd`"
#git status;sleep 1                                     //步骤三:清理出合并冲突/失败的仓库,需要手动修改
#git checkout .;sleep 1                    //清理代码,会丢弃本地修改

git pull `git remote` SDK_branch;sleep 1         //步骤一:SDK_branch:新代码基线的分支名。拉取新基线代码到本地
#git push `git remote` android-XXX;sleep 1               //步骤二:android-XXX: 远端分支名

fi

自动同步代码的脚本auto_update_branch.sh请拷贝到:/usr/local/bin/auto_update_branch.sh,并添加可执行权限

4,(步骤1中找出来的仓库)开发修改过的仓库,需要手动修改合并。

5,编译和烧写验证,本地代码推送远端服务器。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沫沫罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值