
最近在项目中发现,软件版本管理较为混乱,框架的修改常常牵一发而动全身,严重影响研发效率。为此,结合过往经验及业界成熟的版本管理实践,以 Sparrow (https://gitee.com/LinuxTaoist/Sparrow) 项目为例,对常用的版本管理进行总结。
版本管理涵盖以下几个关键方面:
v1.0.0-rc 的格式标识版本,便于快速识别版本用途。master/dev/feature-*等命名不同分支,避免不同项目的修改相互干扰。commit 按照模板,明确修改的问题;
版本发布时,更新 CHANGELOG,记录重点变更。dev 推荐使用merge,确保开发分支保留最完整的修改;
合入主干分支 master推荐使用覆盖,确保主干分支干净稳定。分支名 | 说明 |
|---|---|
master | 主版本。永远支持量产能力 |
Sparrow-dev | 开发迭代分支。源自master, 用于所有功能开发的起点。 |
feature-* | 功能分支。源自Sparrow-dev, 用于开发新特性。完成后合并至Sparrow-dev, 并评估是否删除。 |
Sparrow-* | 项目分支。源自Sparrow-dev, 用于立项后的项目开发。完成后合并至Sparrow-dev 和 master, 并评估是否删除。 |
bugfix-* | 修复分支。源自master, 修复量产分支问题,修复后合并至Sparrow-dev和master, 并评估是否删除。 |
示例:1.3.0-alpha, 路径 version.cmake
# 版本信息
set(VERSION_MAJOR 1)
set(VERSION_MINOR 3)
set(VERSION_REVISION 0)
set(VERSION_PRELEASE "alpha")
从功能开发到最终发布, 分支拉取规则如下:
Sparrow-dev 拉取分支 feature-xxx分支。feature-xxx 中 version.cmake 分支次版本号 +1,编译版本号设为alpha (例 1.2.0-rc -> 1.3.0-alpha)。feature-xxx 到 Sparrow-dev, 删除 feature-xxx。Sparrow-dev 拉取项目分支 Sparrow-Asia。Sparrow-Asia 中 version.cmake 版本号不变,编译版本号为 Beta (1.3.0-alpha -> 1.3.0-Beta)。Sparrow-Asia 分支到 Sparrow-dev 分支。Sparrow-Asia 分支覆盖到 master 分支,删除 Sparrow-Asia 分支。master 分支中 version.cmake 版本号不变,编译版本号为rc (1.3.0-Beta -> 1.3.0-rc);更新 CHANGELOG;打上tag(例: Tag_v1.3.0)。master 拉取分支 bugfix-xxx 分支。bugfix-xxx 分支中 version.cmake 修订号 +1,编译版本号设为 alpha (例 1.3.0-rc -> 1.3.1-alpha)。Sparrow-dev 和 master 分支。master 分支中 version.cmake 版本号不变,编译版本号为rc (1.3.0.1-alpha -> 1.3.1-rc);更新 CHANGELOG;打上tag (例: Tag_v1.3.1)。分支管理
master 和开发分支 dev,其他稳定版本同步至 master,通过标签 tag 进行标记和管理。用心感悟,认真记录,写好每一篇文章,分享每一框干货。
更多文章内容包括但不限于C/C++、Linux、开发常用神器等,可进入“开源519公众号”聊天界面输入“文章目录” 或者 菜单栏选择“文章目录”查看。公众号后台聊天框输入本文标题,在线查看源码。 在聊天框输入“开源519资料” 获取Linux C/C++ 学习资料书籍。