Android下的配置管理之道之基线升级

编程入门 行业动态 更新时间:2024-10-27 17:15:43

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   q_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)都是自己公司的提交。

之后高通基线释放了一次更新。
假设
这个是之前一次基线的我们的开发分支的提交历史情况
q1 - q2 - q3 - q 4 - A - B - C - D #这样几个提交

这次高通升级了,他们在q4之后多几个提交的。
q1 - q2 - q3 - q 4 - q5 - q6 -q 7

我通过git rebase之后 就是说 要把我们公司自己的提交 A - B - C - D 这四个放到 q7 后面连起来
q1 - q2 - q3 - q 4 - q5 - q6 -q 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)
* 98e139704 - 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)
* 1094b5cea - [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)
* 79a4026ae - [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)
* 9e83227bc - [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)
* 98e139704 - 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                                            — QC Publisher - (12 days ago)
* 9b84f778a25 - Commit label r00205.1 - ES2 0.0.205.1                                            — QC Publisher - (12 days ago)
* 7aeff4872 - Commit label r00160.1 - ES1 0.0.160.1                                            — QC Publisher - (12 days ago)

同样的我们在最后那个提交我们做了个end的tag标记

接下来我们看到高通这次新升级的基线历史。我们可以看到比上次多了一个最后一个提交 709f36e60d8 - Commit label r00446.1.135694.1 - Post-CS6 0.0.446.1.135694.1


* 709f36e60d8 - Commit label r00446.1.135694.1 - Post-CS6 0.0.446.1.135694.1                     — QC Publisher (HEAD -> new) - (3 days 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)
* 98e139704 - 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                                            — QC Publisher - (12 days ago)
* 9b84f778a25 - Commit label r00205.1 - ES2 0.0.205.1                                            — QC Publisher - (12 days ago)
* 7aeff4872 - Commit label r00160.1 - ES1 0.0.160.1                                            — QC Publisher - (12 days ago)

最后我们执行 git rebase --onto new start end 命令


$ git rebase --onto new start end  
First, rewinding head to replay your work on top of it...  
Applying: [SHAR-3][AMSS] set modem build env
省略很多
Applying: [SHAR-3222][CSP] Modem: Fix Fdd sig drop when tx off
Applying: [SHA-1356][CSP]Make call detail info persist
Applying: [SHA-1356][CSP]Judge lte sig strength by rsrp instead of rssi
Applying: [SHA-1356][CSP]Fix some modem stats free

我们可以看到一系列的applying输出,表明在打patch的。这次我们比较幸运是没有冲突的,当有冲突我们可以停下来解决冲突,然后继续git rebase --continue

执行完git rebase之后 会切换到一个匿名分支上的。

$ git --no-pager ll                                                                                       
* 7e97cd4e4f1 - [SHA-1356][CSP]Fix some modem stats free                                         — 研发某某人 (HEAD) - (2 days ago)
中间省略很多提交
* 9555a23168e - [SHAR-28][CSP] Modem: RF Bring up code                                           — 研发某某人 - (5 months ago)
* afe71d51b14 - [SHAR-3][AMSS] fix modem build env                                               — 研发某某人 - (5 months ago)
* 4656922ed - [SHAR-4][csp] initial mbn configuration and build scripts                        — 研发某某人 - (5 months ago)
* 4ef2d960d65 - [SHAR-3][AMSS] set modem build env                                               — 研发某某人 - (5 months ago)
* 709f36e60d8 - Commit label r00446.1.135694.1 - Post-CS6 0.0.446.1.135694.1                     — QC Publisher (new, r00446.1.135694.1) - (3 days ago)
* 5d9c028721b - Commit label r00446.1 - Post-CS6 0.0.446.1                                       — QC Publisher (tag: start,r00446.1) - (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)
* 98e139704 - 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                                            — QC Publisher - (12 days ago)
* 9b84f778a25 - Commit label r00205.1 - ES2 0.0.205.1                                            — QC Publisher - (12 days ago)
* 7aeff4872 - Commit label r00160.1 - ES1 0.0.160.1                                            — QC Publisher - (12 days ago)

通过以上操作我们看到 我们 已经我把我们自己公司的所有提交 都放到新高通基线的最后了。这就是基线升级。

下面也是一种简单的git rebase的方式

#首先checkout到我们的开发分支上,dev分支上#然后执行
git rebase <高通新基线分支r00446.1.135694.1>这个顺序出来的git log历史 就是 先是高通的提交,后面都是我们自己公司的提交。这个顺序是我们想要的。

如果你分支顺序弄反了,git log的历史也就反过来了。


#首先checkout到  高通新基线分支#然后执行
git rebase <我们的开发分支 dev>这个顺序出来的git log历史是先是dev分支的所有提交历史,最后一个提交是高通新基线的那个提交。
(对我们这个例子高通新基线只多了一个提交,所以这里我们最后只看到这1个)

#基线升级 git cherry-pick

当然除了使用git rebase 命令我们还可以使用git cherry-pick

$ git cherry-pick c6ade72c576^..b299ad990db#其中c6ade72c576是我们公司的第一个提交 。c6ade72c576^ 表示这个提交的前一个提交。     
#b299ad990db是我们公司的最后一个提交。#这个首先我们在checkout 到高通新基线,然后把我们的提交都cherry-pick到高通新基线后面       

$ git cherry-pick c6ade72c576^..b299ad990db  
[new 0c359bfd39f] [SHAR-3][AMSS] set modem build env
[new aa215b1d329] [SHAR-4][csp] initial mbn configuration and build scripts    
中间也省略很多log。
[new a068317e390] [SHA-1356][CSP]Make call detail info persist
[new 454451a3363] [SHA-1356][CSP]Judge lte sig strength by rsrp instead of rssi  
[new ebef8e4e415] [SHA-1356][CSP]Fix some modem stats free

#基线升级 git merge

下面我们看看git merge的操作

我们先checkout到我们的新基线哪个提交上,


* 709f36e60d8 - Commit label r00446.1.135694.1 - Post-CS6 0.0.446.1.135694.1                     — QC Publisher (r00446.1.135694.1) - (3 days ago)  
* 5d9c028721b - Commit label r00446.1 - Post-CS6 0.0.446.1                                       — QC Publisher (tag: start, r00446.1) - (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) 
* 98e139704 - 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) 

然后直接执行git merge dev分支。就是把dev分支直接合并到当前这个新基线分支上。


$ git --no-pager ll                                                                                           
*   c49b5d92582 - Merge remote-tracking branch 'shgit/sdm845_o_dev_20171101' into n                — Minghui Ma (HEAD -> n) - (3 minutes ago)  
|\  
| * b299ad990db - [SHA-1356][CSP]Fix some modem stats free                                         — 研发某某人 (tag: end, 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)
| * 1094b5cea - [SHAR-3506][CSP] Modem: CA config lead crash                                     — 研发某某人 - (4 days ago)
| * 82d22ff8f0e - [SHAR-28][CSP] Modem: Modify Gsm static NV                                       — 研发某某人 - (7 days ago)
| * 中间省略很多log
| * 79a4026ae - [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)
| * 9e83227bc - [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)
* | 709f36e60d8 - Commit label r00446.1.135694.1 - Post-CS6 0.0.446.1.135694.1                     — QC Publisher (r00446.1.135694.1) - (3 days ago)  
|/  
* 5d9c028721b - Commit label r00446.1 - Post-CS6 0.0.446.1                                       — QC Publisher (tag: start, r00446.1) - (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)
* 98e139704 - 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                                            — QC Publisher - (12 days ago)
* 9b84f778a25 - Commit label r00205.1 - ES2 0.0.205.1                                            — QC Publisher - (12 days ago)
* 7aeff4872 - Commit label r00160.1 - ES1 0.0.160.1                                            — QC Publisher - (12 days ago)

通过git merg的方式 我们看到git log 历史发现了分叉的现象
5d9c028721b 和 709f36e60d8 这里出现了分叉。

这个时候如果在使用 git rebase -i 5d9c028721b 就会把历史搞成一条直线了。

我们在试试 git merge 高通基线分支

# 首先我们要checkout到我们的开发dev分支上。然后执行git merge q
$ git --no-pager ll       
*   e82f092d067 - Merge branch 'q' into HEAD                                                    —  (HEAD) - (20 seconds ago)
|\  
| * 709f36e60d8 - Commit label r00446.1.135694.1 - Post-CS6 0.0.446.1.135694.1                     — QC Publisher (r00446.1.135694.1, q) - (3 days ago) 
* | b299ad990db - [SHA-1356][CSP]Fix some modem stats free                                         — 研发某某人 (tag: end,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)
* | 中间省略很多log
* | 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, r00446.1) - (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)
* 98e139704 - 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                                            — QC Publisher - (12 days ago)
* 9b84f778a25 - Commit label r00205.1 - ES2 0.0.205.1                                            — QC Publisher - (12 days ago)
* 7aeff4872 - Commit label r00160.1 - ES1 0.0.160.1                                            — QC Publisher - (12 days ago)

这个时候我们看到 高通最新的那个提交“Commit label r00446.1.135694.1” 放到了我们自己的提交的后面了。

所以说这个git merge时候 分支是顺序也是很重要的。

其实结果是一样的,也就是说你怎么merge,最后的代码应该是一样的。只是git log的历史看着顺序不太一样。

同样的的采用git rebase的方式 也是需要关系顺序的。

#基线升级 冲突解决策略

升级冲突之二进制文件冲突解决策略

今天我们来看个 升级有冲突的一个情况 ,这次冲突的文件还是一个二进制的文件。

下面是我们开发分支的最新的提交,暂且叫做dev分支,
我们可以看到 Commit label r00455.2 - Post-CS7 0.0.455.2是最新的高通的提交。


* d15c629 - [SHAR-1651][Drv][WLAN] Modify RF bin for pvt machine                             —  (HEAD, dev) - (11 days ago)
* 9818689 - [SHAR-4346][Drv][WLAN] Modify the tmp bdf name to bawlant.bin                    —  - (4 weeks ago)
* 87233f6 - [SHAR-4346][Drv][WLAN] Add tmp_bdf file to pitable dvt machine                —  - (5 weeks ago)
* eab031d - [SHAR-1651][Drv][WLAN] Modify RF bdf bin for PVT product                         —  - (5 weeks ago)
* e7caad1 - [SHAR-1651][Drv][WLAN] Modify for RF bin to optimize power test                  —  - (6 weeks ago)
* 269c0a7 - [SHAR-1651][Drv][WLAN] Modify RF bin file of 20171227 for factory test           —  - (2 months ago)
* bbcda88 - [SHAR-1651][Drv][WLAN] Replace bin for RF 20171226 optimize parameters           —  - (2 months ago)
* b621875 - [SHAR-1651][Drv][WLAN] Modify for RF test bin                                    —  - (3 months ago)
* 881b1c0 - [SHAR-223] WLAN RF paremeters update                                             —  - (4 months ago)
* 53b284b - Commit label r00455.2 - Post-CS7 0.0.455.2                                       — QC Publisher - (4 weeks ago)
* 18cd798 - Commit label r00446.1 - Post-CS6 0.0.446.1                                       — QC Publisher - (6 weeks ago)
* 6b5ada6 - Commit label r004361.1 - Post-CS5 0.0.4361.1                                     — QC Publisher - (6 weeks ago)
* b86ba16 - Commit label r00425.1 - Post-CS4 0.0.425.1                                       — QC Publisher - (6 weeks ago)
* 2dd6908 - Commit label r00418.2 - Post-CS3 0.0.418.2                                       — QC Publisher - (6 weeks ago)
* 9c2aea2 - Commit label r004031.1 - Post-CS2 0.0.4031.1                                     — QC Publisher - (6 weeks ago)
* 62976a7 - Commit label r00391.1 - Post-CS 0.0.391.1                                        — QC Publisher - (6 weeks ago)
* 0c2bf63 - Commit label r00375.10a - CS 0.0.375.10a                                         — QC Publisher - (6 weeks ago)
* 5409905 - Commit label r00355.2 - Post-CS4 0.0.355.2                                       — QC Publisher - (6 weeks ago)
* 089bfa5 - Commit label r00333.1a - Pre-CS3 0.0.333.1a                                      — QC Publisher - (6 weeks ago)
* c70ada6 - Commit label r00322.2 - Pre-CS 0.0.322.2                                         — QC Publisher - (6 weeks ago)
* 41de9fd - Commit label r00304.1 - Pre-CS 0.0.304.1                                         — QC Publisher - (6 weeks ago)
* b31005a - Commit label r00278.1 - FC 0.0.278.1                                             — QC Publisher - (6 weeks ago)
* 380080c - Commit label r00252.1 - FC 0.0.252.1                                             — QC Publisher - (6 weeks ago)
* d0f5347 - Commit label r00227.1 - ES3 0.0.227.1                                            — QC Publisher - (6 weeks ago)
* cd51300 - Commit label r00205.1 - ES2 0.0.205.1                                            — QC Publisher - (6 weeks ago)
* 39aae3a - Commit label r00160.1 - ES1 0.0.160.1                                            — QC Publisher - (6 weeks ago)

这次高通释放了一个新的基线了。叫做Post-CS8了Commit label r00461.1 - Post-CS8 0.0.461.1。


* b43884c - Commit label r00461.1 - Post-CS8 0.0.461.1                                       — QC Publisher (r00461.1) - (2 weeks ago)
* 53b284b - Commit label r00455.2 - Post-CS7 0.0.455.2                                       — QC Publisher (r00455.2) - (4 weeks ago)
* 18cd798 - Commit label r00446.1 - Post-CS6 0.0.446.1                                       — QC Publisher (r00446.1) - (6 weeks ago)
* 6b5ada6 - Commit label r004361.1 - Post-CS5 0.0.4361.1                                     — QC Publisher - (6 weeks ago)
* b86ba16 - Commit label r00425.1 - Post-CS4 0.0.425.1                                       — QC Publisher - (6 weeks ago)
* 2dd6908 - Commit label r00418.2 - Post-CS3 0.0.418.2                                       — QC Publisher - (6 weeks ago)
* 9c2aea2 - Commit label r004031.1 - Post-CS2 0.0.4031.1                                     — QC Publisher - (6 weeks ago)
* 62976a7 - Commit label r00391.1 - Post-CS 0.0.391.1                                        — QC Publisher - (6 weeks ago)
* 0c2bf63 - Commit label r00375.10a - CS 0.0.375.10a                                         — QC Publisher - (6 weeks ago)
* 5409905 - Commit label r00355.2 - Post-CS4 0.0.355.2                                       — QC Publisher - (6 weeks ago)
* 089bfa5 - Commit label r00333.1a - Pre-CS3 0.0.333.1a                                      — QC Publisher - (6 weeks ago)
* c70ada6 - Commit label r00322.2 - Pre-CS 0.0.322.2                                         — QC Publisher - (6 weeks ago)
* 41de9fd - Commit label r00304.1 - Pre-CS 0.0.304.1                                         — QC Publisher - (6 weeks ago)
* b31005a - Commit label r00278.1 - FC 0.0.278.1                                             — QC Publisher - (6 weeks ago)
* 380080c - Commit label r00252.1 - FC 0.0.252.1                                             — QC Publisher - (6 weeks ago)
* d0f5347 - Commit label r00227.1 - ES3 0.0.227.1                                            — QC Publisher - (6 weeks ago)
* cd51300 - Commit label r00205.1 - ES2 0.0.205.1                                            — QC Publisher - (6 weeks ago)
* 39aae3a - Commit label r00160.1 - ES1 0.0.160.1                                            — QC Publisher - (6 weeks ago)

高通一般都是一次给一个提交的,例如最新的 r00461.1 对应 Post-CS8。
从中我们也可以看出高通的一些命名方式,先是从 ES1 , ES2 , ES3,
然后是FC, 然后是 Pre CS阶段, 然后是CS阶段,后面是Post CS阶段。

其中标签的命令也是有规律的, r00160.1, r00205.1 等等,基本上数字是增大的顺序来的。
每个提交高通都会打上对应的一个TAG标签,命名也就是r00205.1这样的。

1.首先我们checkout到dev分支上


git checkout dev

2.然后执行git rebase r00461.1
我们这次采用简单的git rebase方式。通常使用的是git rebase --onto new start end的方式

$ git rebase r00461.1                                                             
First, rewinding head to replay your work on top of it...
Applying: [SHAR-223] WLAN RF paremeters update
Using index info to reconstruct a base tree...  M         wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin   Falling back to patching base and 3-way merge...
warning: Cannot merge binary files: wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin (HEAD vs. [SHAR-223] WLAN RF paremeters update)Auto-merging wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin
CONFLICT (content): Merge conflict in wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.binerror: Failed to merge in the changes.Patch failed at 0001 [SHAR-223] WLAN RF paremeters updateThe copy of the patch that failed is found in: .git/rebase-apply/patchWhen you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

3.解决二进制文件的冲突

非常不幸的是我们第一个patch就有冲突了。我们可以通过git status查看哪个文件冲突了

$ git st                                                                                                         
rebase in progress; onto b43884c
You are currently rebasing.(fix conflicts and then run "git rebase --continue")(use "git rebase --skip" to skip this patch)(use "git rebase --abort" to check out the original branch)Unmerged paths:(use "git reset HEAD <file>..." to unstage)(use "git add <file>..." to mark resolution)both modified:   wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.binno changes added to mit (use "git add" and/or "git mit -a")

通过结果我们发现是一个.bin 文件,这是一个二进制的文件,不是个文本文件。
执行git diff是看不到什么差异的。

$ git diff  
diff -- wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin
index ed3a8d1,2d71d..0000000
Binary files differ

我们先记录一下这个时候文件的md5值
f744a3402e260d7fd330cbc964972a5c wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin

我们通过git log查看这个我们这个提交,可以发现确实是修改了这个文件。

mit 881b1c0d7d8454656118a2153b98c44f8a477b0f
Author: 
Date:   Fri Nov 10 14:31:25 2017 +0800[SHAR-223] WLAN RF paremeters updateupdate rf paremeters in bdwlan.binChange-Id: Ifbd118b8a584b64bf88635725baeeac309d99fdiff --git a/wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin b/wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin
index e641291..2d71d 100755
Binary files a/wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin and b/wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin differ

此时对于二进制文件的冲突,我们有2种策略,也只能是二选一。
要么选择高通最新的r00461.1 提交 中的这个文件,
要么选择我们自己这个881b1c0d7d8454656118a2153b98c44f8a477b0f提交 中的这个文件。

这个时候需要取和研发沟通来决定 选择哪个文件。 (默认此时文件是高通提交中的文件。)

情况(1)此时可以执行

 git co --ours wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin

来选择 采用高通提交的中的这个文件。
如果你是选择高通提交中的这个文件,有可能我们的这个patch就会变成一个空提交,也就是说可以不要我们这个提交啦。

$ git add wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin                                                  $ git st                                                                                                         
rebase in progress; onto b43884c
You are currently rebasing.(all conflicts fixed: run "git rebase --continue")nothing to mit, working tree clean$ git rebase --continue                                                                                          
Applying: [SHAR-223] WLAN RF paremeters update
No changes - did you fet to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

这个时候提示 No changes。

情况(2)或者 执行


git co --theirs wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin

来选择 我们公司自己提交的中的这个文件。

然后执行 git add

$ git add wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin$ git st                                                                                                         
rebase in progress; onto b43884c
You are currently rebasing.(all conflicts fixed: run "git rebase --continue")Changes to be mitted:(use "git reset HEAD <file>..." to unstage)modified:   wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin

此时文件就会变成绿色,然后执行git rebase --continue,继续进行rebase操作即可。

我们提交中的这个文件的md5值
6abe9c56383a121c2cbd5e6d4c88ad wlan/halphy_tools/host/bdfUtil/qca61x0/bdf/bdwlan.bin

通过操作 git checkout --ours来选择高通提交
通过执行 git checkout --theirs 选择我们自己的提交

升级冲突之文本文件冲突解决策略

下次介绍,这个比较简单

更多精彩请关注

更多推荐

基线,之道,配置管理,Android

本文发布于:2023-05-26 10:42:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/365365.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基线   之道   配置管理   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!