背景:有的平台SDK使用的是repo sync的方式同步代码,当需要将平台更新代码同步到自己项目中时就比较麻烦,整个仓库比较的话Android代码量太大,太耗时,repo又没提供批量制作patch的命令。
所以开发了自动化制作patch的脚本,以及使用教程
原理:
RK代码利用repo sync 同步,不是发的差分包,无法及时同步到自己的项目中,所以本地
保存一份RK原生Code,保持和RK同步,然后制作出差分包再打patch到自己的项目中。
(1)首先需要保存原始Code的oldmanifest --repo manifest -r -o oldmanifest.xml
(2)同步RK code,保存新的newmanifest --repo manifest -r -o newmanifest.xml
(3)使用repo diffmanifests oldmanifest.xml newmanifest.xml 比较manifest差异找出更新的project,注意manifest.xml必须
是全路径repo diffmanifests $PWD/oldmanifest.xml $PWD/newmanifest.xml
(4)写脚本提取出改变的project 的name oldchangeid newchangeid
(5)保存临时 project patch git diff --binary oldchangeid newchangeid > temp.diff
(6)因生成的project patch 不带project 路径,无法直接在整个项目中