Skip to content

DDS工作流

分支

在 DDS 仓库中,分支结构如下所示:

branches

DDS 包含多个分支,但总体而言主要分为以下三类:

master 分支

Master分支是代码库的核心分支,也是最稳定的分支。Master分支拥有最严格的测试,并且只接受经过严格测试的rc分支合并过来的代码。

WARNING

切记,无论何时,feature/bugfix 分支都不应当直接提交或合并到 master 分支。

通常情况下,Master分支会以master_xxx的格式进行命名,例如:master_default,表示是默认的Master分支。

rc 分支

RC分支是代码库的主要功能分支之一,代表一个大的功能。RC分支拥有较为严格的测试,并且只接受来自feature/bugfix分支的经过测试的代码合并。

通常情况下,RC分支会以master_xxx_rc_yyy的格式命名,例如:master_default_rc_test,表示是master_default分支下的RC分支。

feature/bugfix 分支

Feature/bugfix分支是代码库的主要开发分支之一,代表一个独立的小功能。Feature/bugfix分支拥有测试,并且允许直接向分支推送代码。

根据功能不同,通常以feature_xxx或者bugfix_xxx的格式命名,例如:feature_tcp_mode、bugfix_connect,表示需要添加tcp_mode功能或是修复connect功能。命名规则应该简洁明了,能够清晰地表达该分支的目的。

工作流

首次开发

首次开发的时候,需要将仓库 clone 到本地

shell
git clone git@git.minieye.tech:huangjian/dds.git

开发功能

在日常开发中,可以遵循本工作流以获得最佳开发体验

首先从 rc 分支迁出 feature 分支

shell
# 首先切换到 rc 分支
git checkout master_xxx_rc_yyy

# 确保当前 rc 分支是最新分支
git pull

# 从当前 rc 分支迁出 feature 分支
git checkout -b feature_xxx

在此分支上开发完一个功能之后,将该分支合并到 rc 分支

shell
# 首先 rebase 一下 rc 分支
git rebase master_xxx_rc_yyy

# 将 feature 分支推送到远程仓库
git push origin feature_xxx

然后在 gitlab 提交 mr 请求,将该分支合并到 rc 分支,此时会触发 cicd 流水线检查,如果检查不通过请修改之后重新提交

修复线上 bug

在日常开发中,偶尔会发生线上 bug 导致不得不进行热修复

RC 分支热修复

如果是 RC 分支需要热修复,直接从 rc 分支迁出 bugfix 分支,修复完成以后合并回 rc 分支即可修复

shell
# 首先切换到 rc 分支
git checkout master_xxx_rc_yyy

# 确保当前 rc 分支是最新分支
git pull

# 从当前 rc 分支迁出 bugfix 分支
git checkout -b bugfix_xxx

# 修复bug,完成之后提交到 gitlab 仓库之后提交 mr 即可
git push origin bugix_xxx

Master 分支热修复

master 分支热修复会更加复杂些,需要创建一个临时 rc 分支,再从临时 rc 分支迁出 bugfix 分支,修复完成以后提交到 rc 分支,再合并到 master 分支

shell
# 切换到 master 分支
git checkout master_xxx

# 更新到最新 commit
git pull

# 迁出一个新的 rc 分支
git checkout -b master_xxx_rc_bugfix_yyy

# 迁出一个新的 bugfix 分支
git checkout -b bugfix_xxx

# 热修复 bug
# 如果是多人一起操作,需要 rebase 下 rc 分支
git rebase master_xxx_rc_bugfix_yyy

# 将 bugfix 分支提交到 gitlab 仓库
# 然后创建 mr 先合并 bugfix 分支到 rc 分支
# 然后创建 mr 合并到 master 分支
git push origin bugfix_xxx

RC 分支冲突解决

由于 rc 分支在执行 cicd 的时候需要 rebase master 分支,如果 master 分支已经更新,则可能与 rc 分支存在冲突,因此为了解决冲突,需要从 rc 分支迁出 bugfix 分支,然后用bugfix分支 rebase master 分支,解决完冲突以后再提交到 rc 分支,此时冲突解决

shell
# 首先切换到需要解决冲突的分支
git checkout master_xxx_rc_yyy
# 更新到最新的 commit
git pull 

# 前出到 bugfix 分支
git checkout -b bugfix_xxx

# rebase master 分支,解决冲突
git rebase master_xxx

# 提交到 gitlab,创建 mr,合并到 rc 分支
git push origin

智能汽车赋能者