文档章节

不断进化的分支和需求管理

冯威
 冯威
发布于 2019/06/07 09:20
字数 1569
阅读 29
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

昨天有朋友在公众号私信问我几个关于代码分支管理的问题,这几个问题是我去年写的《在团队中使用GitLab中的Merge Request工作模式》一文结尾时抛出的几个问题:

  • 如果系统上线后有紧急Bug需要处理,这个流程应该怎样去调整?

  • 每个任务都在单独分支并行开发,这时如果A和B都依赖C开发的一个模块,应该怎么解决?

  • 理论上Issue管理员和开发人员都可以进行创建,什么样的Issue可以有开发人员来创建?

这几个问题在《敏捷下的需求和代码分支管理》一文中其实已经给出了答案,时隔两个月,管理方式又有了些调整和改进。我觉得还是有必要单独写一写。

总体的流程没有大的变化,还是使用Tapd来管理需求和缺陷,使用Gitlab来管理代码的分支,但有几个小的调整:

  • 迭代周期

  • 需求文档

  • 分支管理

迭代周期调整

之前是以一周做为一个迭代周期,实践中发现,以周为单位,粒度还是太大,有时候紧急上线一个功能或是修复Bug,连续几天都会有发布,甚至一天内还有多次发布。目前迭代遵循着以下几点:

  • 因为功能发布时间的不确定性,需求的安排还是以周为单位来计划

  • 一个完整功能提测通过后,立即发布上线

  • 紧急Bug修复完成后,立即发布上线

像这样调整,产品的迭代会更加敏捷,同时也对整个团队提出了更高的要求,怎样在这样高速迭代的过程中,还保证产品的稳定性?

需求文档的调整

自从以任务为导向调整成需求为导向时,就已经意识到需求的重要性,同时也面临一个问题:需求文档谁来写?

一些大公司的研发团队,配置齐全,有专职的需求分析师,而像我们这种小的创业型产品团队,我希望每个人都能是需求分析师。

在调整为需求导向的开始阶段,是我一个人在写需求的详细描述,一旦精力分散,就会导致有疏漏,效果不是很好。现在我要求团队成员每个人都参与写需求,在接到任务时,必须先思考,把自己到理解写出来,然后才开始开发。

我会对需求做review,也会让经验丰富的程序员来做review,找出遗漏的点和错误的点进行补充和改正。

让每个人都参与需求的编写有两个好处:

  • 可以改掉程序员不喜欢思考,拿到任务就直接写代码的坏习惯

  • 程序员有了自己的思考,并且形成了文字的输出,对需求的理解会更加的深刻,产出的质量会有提高

另外,需求文档的工具,也从原来直接在Tapd中编写,调整到了语雀。在这里强烈推荐下语雀,理由如下:

  • 编辑器,对开发人员非常友好,真正意义上的所见及所得

  • 文中可以直接嵌入Office文档和视频(支持本地视频上传),在线浏览和观看

  • 整个文档可以导出成PDF,不知不觉的就可以写一本电子书

分支的调整

之所以要做调整肯定是遇到了问题,所以,先说问题:

  1. 需要更小迭代的发布,常常A功能已经在测试中,这时B功能并入主分支进行测试,A功能测试完,B功能还在测试中,这是如果发布,会导致没有完成测试的B也发布了,而我只想发布A

  2. 客户A使用的是v6.7.5版本,而现在最新的版本已经迭代到了v6.8.0,在v6.7.5上发现的Bug应该怎么办?

引入release分支

  • 创建release分支做为发布分支,该分支设置为只能管理员提交代码

  • 需求开发完成后,会mergemaster分支进行测试

  • 测试通过的提交,并到release分支,进行再次验证,验证通过,发布上线

引入release分支可以虽然在操作步骤上带来了一些复杂度,但是可以确保能够以最小粒度发布。

引入Tag

release分支发布上线后,以发布的版本号为名称在GitLab中打一个Tag,这样就可以解决上面的问题2,分为两种情况:

  1. v6.7.5Tag创建分支来修复Bug,修复后直接在该分支进行测试,验证通过后发布,最新版本如果该Bug已经修复,则直接更新Tag

  2. v6.7.5Tag创建分支来修复Bug,修复后直接在该分支进行测试,验证通过后发布,最新版本如果没有修复该Bug,将修复Bug的提交合并到主分支,然后更新Tag

同样,当程序发布到docker容器中后,在容器的私有仓库中也打上以版本号命名的Tag,可以便于升级后的回滚。

总结

工具和流程都只是辅助手段,目的是为了团队能够更好的沟通协助,能够持续地有高质量的产出,千万不能本末倒置。

最后,祝大家端午节快乐!

本文分享自微信公众号 - 不止dotNET(moredotnet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

冯威
粉丝 0
博文 68
码字总数 110258
作品 0
武汉
部门经理
私信 提问
加载中
请先登录后再评论。
DNS 管理系统--NamedManager

NamedManager 是一个基于 Web 的 DNS 管理系统,可用来添加、调整和删除 DNS 的 zones/records 数据,支持 Bind 作为后端的 DNS 服务,支持 IPv4 和 IPv6。...

匿名
2013/01/23
8.5K
0
mvc框架--Razor

Razor 是一个轻巧而优雅的servlet mvc框架 # 又一个轮子? no,写就她是为了证实我个人的某些想法,并在这个过程中练练手,这两种冲动碰撞在一起,自然而然地产生了Razor # Razor的现在和未来...

dtubest
2013/01/25
2.9K
0
工作流管理系统--Pegasus WMS

Pegasus (飞马座)工作流管理系统包括一套技术标准工作流程应用程序中执行帮助许多不同的环境中,包括桌面、校园集群、网格、云。它弥补了科学领域和执行环境通过自 动映射到分布式资源的高层工...

匿名
2013/02/24
5.2K
0
N简单CMS

N简单CMS能够让网站开发者更快速、灵活、简单的开发网站。 N简单CMS有以下特点: 更简单和自由的模板标签调用 专注于人性化的管理和操作 基于完全php5框架Kohana2.3.4开发 资源调用和消耗更低...

匿名
2013/02/26
3.1K
0
密码管理程序--pwgrep

为了管理我的密码,我写了一个小的 bash/awk 脚本用来管理一个密码数据库并使用 GnuPG 进行加密。使用 pwgrep 的好处是: 密码加密 密码版本化,不用担心丢失老密码 Since a versioning sys...

匿名
2013/03/11
1.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

在新标签页(而不是新窗口)中打开URL - Open a URL in a new tab (and not a new window)

问题: I'm trying to open a URL in a new tab, as opposed to a popup window. 我正在尝试在新选项卡(而不是弹出窗口)中打开URL 。 I've seen related questions where the responses wo......

富含淀粉
35分钟前
17
0
HTML中id属性的有效值是什么? - What are valid values for the id attribute in HTML?

问题: 为HTML元素创建id属性时,该值有哪些规则? 解决方案: 参考一: https://stackoom.com/question/IMN/HTML中id属性的有效值是什么 参考二: https://oldbug.net/q/IMN/What-are-vali...

法国红酒甜
今天
25
0
mysql innodb 可重复 幻读问题

1 mvcc 解决快照读幻读 2 GAP 锁解决 当前读幻读 (insert时 插入意向锁会等待GAP锁)

yzzzzzzzz
今天
25
0
画风清奇,用开源机器人项目实现“云毕业典礼”

本文作者:o****0 前几天,南京邮电大学的一场毕业典礼引起了吃瓜群众的热议,先来看看这个画风: 由于疫情原因,很多高校的学生只能在家里通过线上视频的方式完成毕业论文答辩。答辩通过后,...

百度开发者中心
07/31
16
0
2020年TOP7的编程语言和框架,它们至少还能风靡全球5年以上

在本文中,我们将看一看由我推荐的编程语言和框架列表,我相信在接下来的5年至10年中,对于开发者来说,这份列表中的语言和框架仍然会有用。同时考虑到我不希望该列表仅是另一个备受好评的编...

京东智联云开发者
今天
25
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部