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

640?wx_fmt=jpeg

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

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

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

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

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

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

  • 迭代周期

  • 需求文档

  • 分支管理

迭代周期调整

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

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

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

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

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

需求文档的调整

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

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

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

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

640?wx_fmt=jpeg

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

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

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

另外,需求文档的工具,也从原来直接在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,可以便于升级后的回滚。

总结

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

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


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Loj #6077. 「2017 山东一轮集训 Day7」逆序对

Loj #6077. 「2017 山东一轮集训 Day7」逆序对 Solution 令fi,jf_{i,j}fi,j​表示前iii个数产生jjj个逆序对的方案数,每次考虑把i1i1i1加入,有i1i1i1个插入位置分别产生0..i0..i0..i个新的逆序对。 因此fnf_{n}fn​的生成函数为(1x)(1xx2)…(1x…xn−…

CF56E Domino Principle 树状数组 + 简单dp

一个比较简单的题,但是我还是没做出来(哭。 很容易想到从后往前做,所以我们可以维护一个dp数组f,f(i)表示到第i个牌倒下能达到的最远距离。 f直接倒着跑,每次取[x,xh−1][x,xh-1][x,xh−1]的最大值即可,可以用线段树比…

基于Docker的Consul服务发现集群搭建

在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章。本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境。一、…

Hills And Valleys CodeForces - 1467B 思维

给你一个数组,最多可以修改一个数,问最少的山峰和山谷数量之和。 小菜鸡做了一年。 一上来想猜个结论,让每个数等于其相邻的两个数,看了题解之后也证明的正确性,当时直接写就没后面这么多事了。 但是命运让我分情况讨…

2018 ACM-ICPC World Finals Problem D.Gem Island

2018 ACM-ICPC World Finals Problem D.Gem Island Solution 其实就是求x1x2⋯xnnd,xi∈[1,d1]x_1x_2\dots x_nnd,x_i\in[1,d1]x1​x2​⋯xn​nd,xi​∈[1,d1]的前rrr大的xix_ixi​的和的期望,可以发现每一种不同的序列{xi}\{x_i\}{xi​}的出现概率都是一个定值&a…

[译]使用LazZiya.ExpressLocalization开发多语言支持的ASP.NET Core 2.x项目

介绍开发多语言支持的ASP.NET Core 2.x Web应用程序需要大量的基础架构设置,并且耗费时间和精力。这篇文章,我们将使用LazZiya.ExpressLocalization nuget包一步本地化支持。背景大多数网络应用程序都是基于网址的本地化。因此我们可以在网址中看到所选的…

2019 ICPC World Finals Problem B. Beautiful Bridges

2019 ICPC World Finals Problem B. Beautiful Bridges Solution 太菜了,sbsbsb题调了一个下午。 首先有一个显然的O(n3)O(n^3)O(n3)的dpdpdp,令fif_ifi​表示最后一个桥柱在iii的最小代价,枚举上一个桥柱jjj,因为地面超过桥拱…

ac 梦幻布丁 启发式合并

题意:中文题。 对于每种颜色,我们都可以看成一个集合。让后把一种颜色变成另一种颜色就转换成了把两个集合的合并问题。显然我们有一个复杂度为O(NlogN)O(NlogN)O(NlogN)的启发式合并能完美的解决这个问题。 解决合并问题了,现在需要解决如何…

VS Code 1.35 发布!全新 logo 来临,远程开发进入稳定版

近期( 北京时间 2019 年 6 月 6 日 ),微软发布了 Visual Studio Code 1.35 版本,带来了众多更新。全新的 logo全新的图标来啦~ 这一次的图标更新历时两个月,VS Code 团队倾听了用户们的反馈。大家对新图标还喜欢吗&…

P2617 Dynamic Rankings 整体二分

树套树板子题,但是整体二分不管是时间复杂度还是空间复杂度都表现更优秀,所以用整体二分来水一波。 普通的整体二分是没有修改操作的。然鹅我们处理修改操作也比较容易,直接减上这个数,让后加上修改之后的数即可。这样按照时间戳来…

2019 ICPC World Finals Problem J. Miniature Golf

2019 ICPC World Finals Problem J. Miniature Golf Solution 设lll为l0l_0l0​时iii的总分为si,l0s_{i,l_0}si,l0​​,si,l0∑kmin(ai,k,l0)s_{i,l_0}\sum_k min(a_{i,k},l_0)si,l0​​∑k​min(ai,k​,l0​),让lll从小到大依次变化,可以发…

基于Domain Driven Design&Clean Architecture原则分层的新启动模板

本文的内容将在0.18.0中发布. Abp中文网将同步更新框架.敬请期待...MVC应用程序启动模板介绍MVC应用程序启动模板是基于领域驱动设计(DDD)分层(或根据偏好分层)的应用程序结构.在这篇文档中详细介绍了解决方案结构和项目参阅ASP.NET Core MVC 模板入门创建此模板的新解决方案并…

CF 1475 F . Unusual Matrix 思维

传送门 大体题意:给定两个矩阵a和b,给定一个操作,这个操作可以将a矩阵任意一行或者任意一列取反,问能否将a变成b。 乍一看不是一个很难的题,但是想我这样思维不好的还是看不出来什么东西。让后看到了题解前几句话 “ …

NEERC 17 Problem I. Interactive Sort

NEERC 17 Problem I. Interactive Sort Solution 当写了两倍正解的代码使用了两倍于正解的操作步数…… 刚开始的想法是求出一个bbb,再求出一个aaa,依次轮换,分别维护当前知道确定值的a,ba,ba,b的有序序列,然后求aaa就在bbb的有…

.Net Core 微服务容器系列基础目录篇

1.开场白HI,各位老铁,大家端午好,之前写了些关于.net core商城系列的文章,有点乱,今天心血来潮想着整理一下(今天只是先把目录列出来,后面的每篇文章这两天会进行重新修改的,目前先将…

CF 1475 D. Cleaning the Phone 思维模型

传送门 题意&#xff1a;一个人有n个程序&#xff0c;每个程序都有占的缓存和价值。现在要释放m及以上的缓存&#xff0c;求失去的价值的最小值。 题解 首先我们知道如果所有缓存加起来 < m 的话&#xff0c;直接输出 - 1 就行啦。 其次呢&#xff0c;我们发现价值只有1和2…

NEERC 17 G.The Great Wall

NEERC 17 G.The Great Wall Solution 这题的第一步tricktricktrick是&#xff1a;我们注意到取a,b,ca,b,ca,b,c的集合两两不交且并集为UUU&#xff0c;因此确定了b,cb,cb,c之后可以简单地唯一确定aaa&#xff0c;于是我们通过让bi−ai,ci−ai,Ans∑aib_i-a_i,c_i-a_i,Ans\sum…

感谢诸君的陪伴,见证微信 SDK 的成长,内含黑科技福利

Senparc.Weixin SDK5000Stars5000 Star5005005000 Stars今天 SDK 已经超过 5000 Stars在此感谢大家的每一份支持和一直以来的关注是你们的信任和陪伴给了我们前行的力量 在未来的日子里也希望大家能够继续支持我们我们将以优秀的产品和服务来回馈你们的支持&#xff01;愿我们携…

NEERC13 Problem H.Hack Protection

NEERC13 Problem H.Hack Protection Solution 注意到题目中的区间与&#xff0c;在左端点lll确定的情况下&#xff0c;对于所有r≥lr\geq lr≥l&#xff0c;ANDl,rAND_{l,r}ANDl,r​只有logloglog种取值&#xff0c;这是一个极为常见的性质。 于是我们从大到小枚举lll&#…

ABC 189 E - Rotate and Flip 矩阵转移

传送门 题意&#xff1a;给定n个点&#xff0c;m个操作&#xff0c;n和m都是1e5级别的。让后每个操作是将这个点绕原点顺时针、逆时针转90&#xff0c;将这个点按照 x p 或着 y p 做对称。再有q个询问&#xff0c;q也是1e5级别的。让后每个询问是问B这个点在第A次操作之后在…