android 下面的基线升级介绍
基线升级一般有2中方式,
- git rebase的方式
- git cherry-pick 的方式(这个效果和git rebase 类似)
- git merge的方式
不同的公司可能采取不同的方式。
两种各有优缺点
git rebase的方式 其中的git log历史会是一条直线走下去的,不会有分叉。
git merge的方式 其中的git log 历史中会有分叉,有自己公司的提交,和其他公司(比如高通)的提交相互穿插的。
git rebase方式 一般最后会采用强制 git push -f的方式推送到服务器上。之前的历史会冲掉,所以一般会先做个备份分支。
git merge 来说安全一些,不会强制git push到服务器,冲掉之前的git log历史。merge一般是不会改变之前的历史提交的。(rebase是会改变之前历史的)
git rebase 会稍微的复杂一些。
git merge 相对于来说简单一些。(一般我们看很多的开源项目都比较喜欢git merge的方式,例如kernel,我们通过git log能看到很多 Merge 打头的提交)
#基线升级 git rebase
git rebase 一般步骤介绍
第一步
repo init -m branch_start_point.xml && repo sync #这个是当时创建分支保存的那个点。
第二步
创建标签 repo forall -c "git tag start_point" #这个是当时创建分支保存的那个点。
第三步
repo init -m dev.xml && repo sync # 这个假设是我们的开发分支。
第四步
创建标签 repo forall -c "git tag end_point" #这个是开发分支最新的那个点。
第五步
repo init –m qcom_base.xml && repo sync
基于这个第五步这个点上 git checkout 出来一个新的分支,new
第六步
git rebase --onto new start_point end_point
repo forall –c “ git rebase --onto new start_point end_point ”
举例 A - B - C - D 这几个,A之前那个是我们的start point,D是我们的end point。
A之前的是高通公司的上次基线。A之前的就都是高通公司的提交了。A之后的(包括A)都是自己公司的提交。
之后高通基线释放了一次更新。
假设
这个是之前一次基线的我们的开发分支的提交历史情况
qcom1 - qcom2 - qcom3 - qcom 4 - A - B - C - D #这样几个提交
这次高通升级了,他们在qcom4之后多几个提交的。
qcom1 - qcom2 - qcom3 - qcom 4 - qcom5 - qcom6 -qcom 7
我通过git rebase之后 就是说 要把我们公司自己的提交 A - B - C - D 这四个放到 qcom7 后面连起来
qcom1 - qcom2 - qcom3 - qcom 4 - qcom5 - qcom6 -qcom 7 - A - B - C - D
具体拿个高通的modem仓库升级举例
下面这个历史是高通上次 r00446.1 基线的历史。
* 5d9c028721b - Commit label r00446.1 - Post-CS6 0.0.446.1 — QC Publisher (tag: start)
* 3a7938edc31 - Commit label r004361.1 - Post-CS5 0.0.4361.1 — QC Publisher - (12 days ago)
* 57ab46a6d39 - Commit label r00425.1 - Post-CS4 0.0.425.1 — QC Publisher - (12 days ago)
* 4969cbee834 - Commit label r00418.2 - Post-CS3 0.0.418.2 — QC Publisher - (12 days ago)
* cc98e139704 - Commit label r004032.1 - Post-CS2 0.0.4032.1 — QC Publisher - (12 days ago)
* a3e87e4a191 - Commit label r004031.1 - Post-CS2 0.0.4031.1 — QC Publisher - (12 days ago)
* 21394e21a15 - Commit label r00391.1 - Post-CS 0.0.391.1 — QC Publisher - (12 days ago)
* 285c683e3de - Commit label r00375.10a - CS 0.0.375.10a — QC Publisher - (12 days ago)
* f8a82bb4771 - Commit label r00355.2 - Post-CS4 0.0.355.2 — QC Publisher - (12 days ago)
* 2eff551636f - Commit label r00333.1a - Pre-CS3 0.0.333.1a — QC Publisher - (12 days ago)
* e8e2ffec9aa - Commit label r00322.2 - Pre-CS 0.0.322.2 — QC Publisher - (12 days ago)
* abb243c22ca - Commit label r00304.1 - Pre-CS 0.0.304.1 — QC Publisher - (12 days ago)
我们需要在5d9c028721b做个start的标记,一般可以采用git tag start 5d9c028721b的方式。
再看我们的开发分支的历史
* b299ad990db - [SHA-1356][CSP]Fix some modem stats free — 研发某某人 (tag: end, shgit/dev) - (2 days ago)
* 19e07ef237b - [SHA-1356][CSP]Judge lte sig strength by rsrp instead of rssi — 研发某某人 - (2 days ago)
* 1c68bd229dc - [SHA-1356][CSP]Make call detail info persist — 研发某某人 - (3 days ago)
* 9ce5e6e71ac - [SHAR-3222][CSP] Modem: Fix Fdd sig drop when tx off — 研发某某人 - (4 days ago)
* 1094b5cccea - [SHAR-3506][CSP] Modem: CA config lead crash — 研发某某人 - (4 days ago)
* 82d22ff8f0e - [SHAR-28][CSP] Modem: Modify Gsm static NV — 研发某某人 - (7 days ago)
* b13744a6313 - [SHAR-3703][CSP] set PS supplementary service domain preference to 1 — 研发某某人 - (6 days ago)
* d20f9dc03cd - [SHAR-1341][csp] modify gsm1800 lte b3 tds b39 and lte b39 qm13126 port config — 研发某某人 - (3 weeks ago)
* 0d8a1976514 - [SHAR-28][CSP] Modem: remove gsm fbrx and modify gsm static nv — 研发某某人 - (2 weeks ago)
* 3e9a3ec2928 - [SHAR-32][CSP] Modem: Modify GSM PA value — 研发某某人 - (4 weeks ago)
中间省略一大部分提交历史
* 97a7fe15ad0 - [SHAR-32][CSP] Modem: RF ca bring up,update rx2 rx3 and gsm wtr port — 研发某某人 - (4 months ago)
* c7042b70fd2 - [SHAR-37][csp]modem : adjust antenna switch band configuration — 研发某某人 - (4 months ago)
* 79a4026acce - [SHAR-32][CSP] Modem: RF ca bring up,delete rx2,rx3 — 研发某某人 - (5 months ago)
* ca009c17f44 - [SHAR-37][csp]modem: rfc antenna initial settings — 研发某某人 - (5 months ago)
* 9cce83227bc - [SHAR-32][CSP] Modem: RF ca bring up — 研发某某人 - (5 months ago)
* 124691dd56a - [SHAR-28][CSP] Modem: RF Bring up code — 研发某某人 - (5 months ago)
* fd27c311a84 - [SHAR-3][AMSS] fix modem build env — 研发某某人 - (5 months ago)
* 5b07995a297 - [SHAR-4][csp] initial mbn configuration and build scripts — 研发某某人 - (5 months ago)
* c6ade72c576 - [SHAR-3][AMSS] set modem build env — 研发某某人 - (5 months ago)
* 5d9c028721b - Commit label r00446.1 - Post-CS6 0.0.446.1 — QC Publisher (tag: start) - (10 days ago)
* 3a7938edc31 - Commit label r004361.1 - Post-CS5 0.0.4361.1 — QC Publisher - (12 days ago)
* 57ab46a6d39 - Commit label r00425.1 - Post-CS4 0.0.425.1 — QC Publisher - (12 days ago)
* 4969cbee834 - Commit label r00418.2 - Post-CS3 0.0.418.2 — QC Publisher - (12 days ago)
* cc98e139704 - Commit label r004032.1 - Post-CS2 0.0.4032.1 — QC Publisher - (12 days ago)
* a3e87e4a191 - Commit label r004031.1 - Post-CS2 0.0.4031.1 — QC Publisher - (12 days ago)
* 21394e21a15 - Commit label r00391.1 - Post-CS 0.0.391.1 — QC Publisher - (12 days ago)
* 285c683e3de - Commit label r00375.10a - CS 0.0.375.10a — QC Publisher - (12 days ago)
* f8a82bb4771 - Commit label r00355.2 - Post-CS4 0.0.355.2 — QC Publisher - (12 days ago)
* 2eff551636f - Commit label r00333.1a - Pre-CS3 0.0.333.1a — QC Publisher - (12 days ago)
* e8e2ffec9aa - Commit label r00322.2 - Pre-CS 0.0.322.2 — QC Publisher - (12 days ago)
* abb243c22ca - Commit label r00304.1 - Pre-CS 0.0.304.1 — QC Publisher - (12 days ago)
* 07404bef2a1 - Commit label r002781.1 - FC 0.0.2781.1 — QC Publisher - (12 days ago)
* c08322001fa - Commit label r00278.1 - FC 0.0.278.1 — QC Publisher - (12 days ago)
* 704b0689e09 - Commit label r00252.1 - FC 0.0.252.1 — QC Publisher - (12 days ago)
* c38db517801 - Commit label r00227.1 - ES3 0.0.227.1