介绍
这是我们团队的 Git 分支管理规范。每个人对工具的使用往往各有偏好,各种方法各有利弊,无所谓对错。但涉及团队协作的方面需要有一些一致的规范,所以请大家务必遵守。
除了一致性之外,这个规范的目的是以下几点:
- 确保可以轻易确定特定时间发布或运行的版本。在新发布的程序存在重大缺陷时,可以尽快 rollback 到上一个稳定版本。
- 在需要修复紧急 bug 并尽快发布时,可以只发布必要的 bugfix 而不同时发布还不应发布的其他改动。
branch 和 tag
每个官方的 repo(leancloud/
下的都是官方 repo)有且仅有以下的 branch 和 tag。
Branch: master
和 release
。其中 master
对应目前的开发分支,所有的 pull request 都应该发到这个分支。release
是当前发布的分支,在这个分支只能增加从 master
cherrypick 过来的 commit。详见本文后面的说明。
Tag: 对应每个发布版本的 tag。SDK 和应用程序的 tag 遵照 <major>.<minor>.<patch>
的命名,如 2.5.1
;服务端程序的 tag 以发布的日期命名,如 2014.11.13
,如果有 bugfix,则在后面增加小写字母,如 2014.11.13
后是 2014.11.13a
,然后是 2014.11.13b
。
目前还有部分 repo 包含多个独立部署的项目(如 uluru-platform
)。在这样的 repo 打 tag 时需要附上项目名做前缀,如 bigquery-2.5.1
。但我们需要逐步把这些项目拆分到独立的 repo。
发布新版流程
- 确保所有要发布的 pull request 都已经 merge 到
master
; - 使用
master
branch 的代码进行测试,如果发现 bug,把对应的 bugfix merge 到master
; - 删除旧的
release
branch,并从当前的master
创建新的release
branch; - 在 Jenkins 上从
release
branch 发起新的 build 并发布; - 发布完成后在当前的
release
branch 打上对应版本的 tag。
Bugfix 流程
这里的 bugfix 指的是修复已经发布的程序(release
branch)中的缺陷。master
里的 bug 请直接 merge bugfix 到 master
。
- 如果此缺陷在
master
中还存在,请先 merge bugfix 到master
,否则跳到下一步; - 在
release
branch 从master
cherrypick 修复该缺陷的一个或多个 commit; - 在 Jenkins 上发布当前
release
branch; - 发布完成后在当前的
release
branch 打上递增的 tag。比如,如果上一个 tag 是2.5.1
,这个 tag 应该是2.5.2
;如果上一个是2014.11.13
,这个就是2014.11.13a
。
其他
并不是每个 bug 都有专门发布 bugfix 版的必要,对于不紧急的 bug,可以在 master
里 fix 后随下一个版本发布。
在一个官方 repo 下只应该有以上说的 branch 和 tag,在开发过程中使用到的 feature branch 等请都放在个人的 fork,一律通过向 master
发 pull request 的方式给官方 repo 提交代码。
相关推荐
一位不知名的大神总结的代码分支管理的资料。讲述了分支的策略,分支的场景和开发人员需要注意的主要问题,工作中比较实用,推荐给大家。
Git 是目前最流行的源代码管理工具。为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作
Git原理详解与实操指南\pdf\10 分支管理:掌握快速切换分支和新建分支能力-专栏. Git原理详解与实操指南\pdf\11 文件忽略进阶:忽略已加入版本控制器的文件-专栏. Git原理详解与实操指南\pdf\12 比较分支差异:展示...
本文来自segmentfault,文章介绍了创建与合并分支、分支的操作管理以及多人协作开发等相关知识。利用分支就可以实现多人开发的伟大模式,从而提高生产效率。在整个GIT之中,主分支(master)主要是作为程序的发布使用...
编译Linux内核 131 10.1 内核到底是什么 131 10.2 获取内核源代码 132 10.2.1 选择正确的版本 133 10.2.2 解压缩内核源代码 133 10.3 建立内核 134 10.3.1 make xconfig过程 135 10.3.2 内核...
3.4.3. 分支与合并23 4. SVN API25 4.1. 使用API25 4.2. URL和路径需求27 4.3. 使用C和C++以外的语言27 4.4. 代码样例28 4.4.1. 使用版本库层28 4.4.2. 使用Python处理版本库层35 4.4.3. 一个Python状态爬虫40 4.5. ...
Git权威指南 目 录 前 言 第1篇 初识Git 第1章 版本控制的前世和今生/ 2 1.1 黑暗的史前时代/ 2 1.2 CVS—开启版本控制大爆发/ 5 1.3 SVN—集中式版本控制集大成者/ 7 1.4 Git—Linus 的第二个伟大作品/ 9 第2章 ...
1.收获操作基础知识点 2.掌握种操作技巧 3.熟悉协作模式 4.掌握标签管理和分支管理 代码冲突与恢复处理方法 5.是开发的实际经验终结与提炼
4.1.3 对代码片断编辑测试窗页面中的表达式进行求值..... 111 4.2 调试...... 112 4.2.1 基本的调试活动..... 113 4.2.2 表达式求值..... 115 4.2.3 修改变量和字段的值..... 116 4.2.4 使用Java编辑器进行调试......
4.1.3 对代码片断编辑测试窗页面中的表达式进行求值..... 111 4.2 调试...... 112 4.2.1 基本的调试活动..... 113 4.2.2 表达式求值..... 115 4.2.3 修改变量和字段的值..... 116 4.2.4 使用Java编辑器...
代码版本库控制,采用SVN版本控制,可以方便的进行分支管理,TAG标识等操作。
高级Bash脚本编程指南 一本深入学习shell脚本艺术的书籍 Mendel Cooper 春敏 杨 - 毅 黄 - 3.9.1 2006年5月26日 这本书假定你没有任何关于脚本或一般程序的编程知识, 但是如果你具备相关的知识, 那么你将很...
jBPM4.3用户指南 1. 导言 1.1. 许可证与最终用户许可协议 1.2. 下载 1.3. 源码 1.4. 什么是jBPM 1.5. 文档内容 1.6. 从jBPM 3升级到jBPM 4 1.7. 报告问题 2. 安装配置 2.1. 发布 2.2. 必须安装的软件 2.3....
指南,提供关于 Team Server 生成、项目管理、报告和源代码管理的简明建议。每份指南都 会告诉您要做哪些事情、为什么要遵从指南以及如何遵从指南。 实践,以课程开发团队通过现场和 Microsoft 内部的 Team ...
01 BPS开发指南 01 BPS概述 01.01 BPS产品简介 01.02 BPS产品组件 01.03 BPS功能特性 01.03.01 BPS Process Server(BPS流程引擎) 01.03.02 BPS API & Component Library(BPS API和构件库) 01.03.03 BPS ...
matlab代码过长分行开发指南 软件和硬件开发指南 目录 软件 一个人的职业不应以所采取的行动来衡量,而应以最终目标和实现这一目标的手段来衡量。 任何人都可以编程,但不是每个人都可以开发可扩展,强大且可维护的...
如何添加源代码管理文件扩展名 49 如何分支文件 50 如何更改默认编辑器 50 如何更改数据库密码 51 如何检查超链接 51 如何签入对项目的更改 52 如何签出文件或项目 52 如何隐藏项目 53 如何创建站点地图 54 如何创建...
153 6.4.1 事件监听 155 6.4.2 事件传播 157 6.4.3 处理异常事件 159 6.5 异步执行 160 6.5.1 异步活动 162 6.5.2 异步分支/聚合 164 6.6 用户代码 166 6.6.1 用户代码的定义 166 6.6.2 用户代码的类加载 168 6.7 小...