一、 摘要
本文讲述笔者在升级codebase时遇到的一些疑难问题和解决思路。
二、 流程
2.1 准备源码
整个升级的策略为两个步骤:
- 升级后版本源码与升级前版本源码进行diff得到patch
- 将patch应用于vendor自己的节点并解冲突
因此,第一步是准备升级前后两个版本的源码。
2.2 配置git仓库
配置git仓库的目的,是为了利用git进行diff,之所以不使用Linux自带的diff命令,是因为下一步所述问题。
将升级前版本源码初始化为git仓库,可提交服务器(gerrit)
2.3 源码替换
这是最坑的一步。原先笔者将升级前代码删光,然后将升级后代码直接复制过来,心想git立马就能检测出差异,差异即升级内容,然后笔者提交至服务器,review发现,出现了大量内容完全一致的修改。
google一下后,了解到,出现该问题是因为两份代码的换行符格式不同,简单介绍一下:
换行符有两种:
- CR(Carriage Return),即
\r
- LF(Line Feed),即
\n
不同的OS上使用的换行符:
- Unix/Linux:LF,十六进制为
0x0A
- MacOS:CR,十六进制为
0x0D
- Dos/Windows:CRLF,十六进制为
0x0D0A