前言:
当我们开发项目时因为需求的原因,需要引入第三方SDK,为了让开发者快速集成第三方会提供相关的接入Demo,有时会提供一套基于SDK实现的拥有常用功能的UI层组件。为了方便很多开发者也都会选择UI组件集成。不过由于UI组件的局限性,不能满足开发者的所有需求,所以就需要源码集成。我们需要根据自己的业务需求修改UI组件源码来实现自己想要的功能。说到这里相信大家已经想到了一个问题。当我们基于UI组件源码集成并修改了大量的代码后,此时如果UI组件本身存在Bug时。这里我们就有两种处理方案:
1. 自己找出Bug原因并修改(需要深入了解组件实现代码逻辑,处理问题耗时久)
2. 给官方提Bug单,让官方专业人士处理(重新引入TUIKit源码,解决效率快)
为了省事儿,很多人会选择第二种方案包括我。当官方给出新的UI组件后我们替换新的就好。不过由于之前改动过大量的UI组件源码,直接替换组件然后再针对修改的地方再次修改这个也相当耗时也没必要,所以为了解决这个问题,就引出这篇文档。
(1)入门篇:github上fork 别人的项目,源项目更新后怎么同步更新自己的fork
(2)进阶篇:github上fork别人的项目后,怎么进行代码贡献
(3)完结篇:开源项目源码集成,巧用 Git 实现自动升级,并合并您自己的修改
下面是实现自动升级组件源码并保存自己修改的代码方案
适读范围:源码集成 TUIKit 且做了二次开发,并需要升级 TUIKit 的同学
1.目标: 通过 git merge 命令来大幅降低人工合并代码的工作量。
2.注意: 在集成 TUIKit 时尽量不要修改目录或者大量重命名类,这可能会造成 git merge 时冲突较多。
3.核心思想: 修改后的 TUIKit 源码作为新分支,合并官网主线分支。
主要步骤(本文以“腾讯IM Demo”为例)
1、记录上次集成的 TIMSDK 工程的 commit ID,比如 commit1
1.1 选择上次集成的版本号
1.2 查看对应版本commit ID并记录

2、下载或者更新最新的 TIMSDK到本地
git clone https://github.com/tencentyun/TIMSDK.git

3、基于 master 新建分支 mix:
git checkout -b mix remotes/origin/master

4、恢复 mix 分支到 步骤一 的 commit1 (也就是恢复到你集成的)
git reset --hard commit1

5、复制自己应用工程里面二次开发后的代码,覆盖到 TIMSDK 的相应位置,比如您是基于 ./TIMSDK/Android/tuikit 修改的,就把修改后的代码覆盖到此处。

6、将代码提交到本地,生成 commit2。(此时新分支 mix 作成)
1. git add .
2. git commit -m 'first update'

7、合并分支 master 到 mix
git merge master

8、 合并官网最新代码。可能会存在上图提示的冲突代码,需要手动解决一下。这里有解决冲突的一些方法。


9、最后把合并后的代码覆盖到您项目里,完成。
10、可以用下面图例来简单表示整个操作

网友评论