学习一线互联网公司git的工作流让你面试不再尴尬

好用的小火箭节点推荐⭐Shadowrocket高速节点推荐

假设给你一个超大项目,你怎么去修复线上bug,怎么去保证分支始终是干净可用,怎么保证项目的代码稳定性呢?

我们探究出了一套管理方法,你学了就是属于你的经验了。

管理工具

首先,我们不会使用禅道之类的工具记录bug和需求,而是使用github中的issue功能。因为bug和需求是和分支有关联的,如果使用第三方工具(禅道),那么将和分支脱节,难以做到统一的管理。当然你也可以选择使用gitea和gogs之类的工具,和github的功能是一样的。本文以gitea为例来讲解。

分支的分类

首先我们将分支分为 固定的3个分支 :

test

测试分支,刚刚开发完的功能或者修复的bug,等待测试人员测试。

master

预发布分支,包含通过测试的新功能或bug修复,随时都可以发布。

prod

正式分支,和生产环境跑的代码一致。

两个 动态分支 ,开发新功能的分支名称以“new_”开头,修复bug的分支名称以“fix_”开头。动态分支用完即可删除。

建立(tag)标签

对于issue和pr来说,我们都需要贴对应的tag(标签),来标识对应的状态。一般来说我们会建立如下17个标签:

一级bug

二级bug

三级bug

无效bug

重复bug

不修复

无法重现

一级需求

二级需求

疑问

已解决

确认解决

已实现

确认实现

解决失败

代码优化

没关联PR

人员的划分

在我们的整个git分支管理方法中分为4个角色

测试人员:测试开发人员写的代码

开发人员:写代码,实现新功能或者修复bug

产品经理:提需求

研发组长:代码审查,合并代码

具体的流程与对应角色

因为每个角色做的事情都不一样,所以我按照角色和动作划分了一下。

动作:新需求

角色:产品经理

创建issue,打需求(一级需求)标签,指派给研发组长。

研发组长,指派给相应的开发人员,标记里程碑。

角色:开发人员

通过指派人,和“需求”标签来搜索新需求。

基于master新建新需求分支,编写代码实现新需求。

代码编写完成之后,将代码合并到test分支。

提pr

到gitea上找到相应的issue,然后将issue和提的pr关联起来,将issue标记为“已实现”。并将测试需求指派给测试人员。

角色:测试人员

通过指派人,和“已实现”标签来搜索新需求,测试新的需求是否如期实现。

如果有bug,新增issue来记录这个bug。并且将bugissue关联到需求issue。

如果新需求没有bug或者所有关联的bug都修复完毕,将issue标记为“确认实现”,且将这个需求关联的pr也标记为“确认实现”

动作:修复bug

角色:测试人员

创建issue,打bug标签,指派给相关的开发人员

等待开发人员修改bug。

通过指派人和“已解决”标签,找到要复测的bug,进行复测。

如果bug修复成功,则标记为“确认解决”,并删除“已解决”标签,且将关联的pr标记为“确认解决”。如果bug未修复成功,则标记为“解决失败”,并删除“已解决”标签。然后指派给开发人员。

角色:开发人员

通过指派人,和bug标签或者“解决失败”标签来搜索未解决的bug。

基于master新建修复bug分支,编写代码修改bug。

代码编写完成之后,将代码合并到test分支。

提PR(注意,如果是新需求产生的bug,不需要重新提pr,直接使用新需求的那个pr)

到gitea上找到相应的issue,将issue标记为“已解决”,然后将issue和提的pr关联起来。并将bug指派给测试人员。

动作:合并代码

角色:研发组长

查看PR标题包含“确认解决”或者“确认实现”的标签。

查看PR是否关联了issue,没关联issue的不可合并。(因为你不知道有没有bug)

查看关联了PR的issue是否标记为“确认解决”或者“确认实现”,如果是则可以合并。先关闭掉所有相关的issue

检查代码是否符合规范。(code review)

关闭关联的issue之后,合并PR。

动作:发布新版本到生产环境

角色:研发组长

查看所有待合并的PR是否都已经合并完成。

将master的分支直接合并到prod。

发布prod分支

动作:临时修复生产环境bug

角色:开发人员

基于master分支新建bug修复分支。

版权声明:
作者:shadowrocket
链接:https://www.shadowrockets.wang/721.html
来源:Shadowrocket官网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>