不知道前人有没有总结类似的方案,仅在这里就自身的经验给大家提供一个参考。我把这个方法叫做“三线法”,主要用作代码基线升级和上游分支管理。
一 使用背景
OEM/ODM公司在获得上游源代码之后,定制自己的所需要添加的部分,但是同时要求和上游源代码所在的分支保持同步更新。
二 "三线法"主要原理
针对某一个项目的代码,给它建立三条分支:upstream branch、baseline branch、main branch(上游分支、基线分支、主开发分支)。其中上游分支即为源代码所在分支,该分支不在我们自己建立的代码仓库内;基线分支,用于保存上一次代码升级的上游分支状况,也是代码升级过程中的中转分支;主开发分支,我们自己建立的仓库内给研发使用的开发分支,它是基线分支+定制代码。
三 “三线法”的优点
最大的优点是避免交错的历史;另一个优点是简化多个项目共用同一个基线时升级操作。
四 具体升级的步骤
针对于不同的上游公司,可能它们管理给客户代码的方式不一样,有一些是提供的镜像仓库,而有一些则是直接提供完整源代码的压缩包。
以下先看看提供镜像仓库的做法:
1.获得上游分支最新代码
通过repo工具manifest列表直接同步下来一套完整的代码。这个同步的方法需要上游公司提供,但是不外乎:
$ repo init
$ repo sync
可能太抽象,举个栗子:
$ repo init -u
一 使用背景
OEM/ODM公司在获得上游源代码之后,定制自己的所需要添加的部分,但是同时要求和上游源代码所在的分支保持同步更新。
二 "三线法"主要原理
针对某一个项目的代码,给它建立三条分支:upstream branch、baseline branch、main branch(上游分支、基线分支、主开发分支)。其中上游分支即为源代码所在分支,该分支不在我们自己建立的代码仓库内;基线分支,用于保存上一次代码升级的上游分支状况,也是代码升级过程中的中转分支;主开发分支,我们自己建立的仓库内给研发使用的开发分支,它是基线分支+定制代码。
三 “三线法”的优点
最大的优点是避免交错的历史;另一个优点是简化多个项目共用同一个基线时升级操作。
四 具体升级的步骤
针对于不同的上游公司,可能它们管理给客户代码的方式不一样,有一些是提供的镜像仓库,而有一些则是直接提供完整源代码的压缩包。
以下先看看提供镜像仓库的做法:
1.获得上游分支最新代码
通过repo工具manifest列表直接同步下来一套完整的代码。这个同步的方法需要上游公司提供,但是不外乎:
$ repo init
$ repo sync
可能太抽象,举个栗子:
$ repo init -u