您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > GIT Flow分支与流程说明
GITFlow分支说明主分支主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和development分支。master分支master分支上存放的应该是随时可供在生产环境中部署的代码(ProductionReadystate)。当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,最好添加对应的版本号标签(TAG)。develop分支develop分支是保存当前最新开发成果的分支。通常这个分支上的代码也是可进行每日夜间发布的代码(Nightlybuild)。因此这个分支有时也可以被称作“integrationbranch”。当develop分支上的代码已实现了软件需求说明书中所有的功能,通过了所有的测试后,并且代码已经足够稳定时,就可以将所有的开发成果合并回master分支了。对于master分支上的新提交的代码建议都打上一个新的版本号标签(TAG),供后续代码跟踪使用。因此,每次将develop分支上的代码合并回master分支时,我们都可以认为一个新的可供在生产环境中部署的版本就产生了。通常而言,“仅在发布新的可供部署的代码时才更新master分支上的代码”是推荐所有人都遵守的行为准则。基于此,理论上说,每当有代码提交到master分支时,我们可以使用GitHook触发软件自动测试以及生产环境代码的自动更新工作。这些自动化操作将有利于减少新代码发布之后的一些事务性工作。辅助分支辅助分支是用于组织解决特定问题的各种软件开发活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作。这些分支与主分支不同,通常只会在有限的时间范围内存在。辅助分支包括:用于开发新功能时所使用的feature分支;用于辅助版本发布的release分支;用于修正生产代码中的缺陷的hotfix分支。以上这些分支都有固定的使用目的和分支操作限制。从单纯技术的角度说,这些分支与Git其他分支并没有什么区别,但通过命名,我们定义了使用这些分支的方法。feature分支使用规范:可以从develop分支发起feature分支代码必须合并回develop分支feature分支的命名可以使用除master,develop,release-*,hotfix-*之外的任何名称feature分支(有时也可以被叫做“topic分支”)通常是在开发一项新的软件功能的时候使用,这个分支上的代码变更最终合并回develop分支或者干脆被抛弃掉(例如实验性且效果不好的代码变更)。一般而言,feature分支代码可以保存在开发者自己的代码库中而不强制提交到主代码库里。release分支使用规范:可以从develop分支派生必须合并回develop分支和master分支分支命名惯例:release-*release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。当develop分支上的代码已经包含了所有即将发布的版本中所计划包含的软件功能,并且已通过所有测试时,我们就可以考虑准备创建release分支了。而所有在当前即将发布的版本之外的业务需求一定要确保不能混到release分支之内(避免由此引入一些不可控的系统缺陷)。成功的派生了release分支,并被赋予版本号之后,develop分支就可以为“下一个版本”服务了。所谓的“下一个版本”是在当前即将发布的版本之后发布的版本。版本号的命名可以依据项目定义的版本号命名规则进行。hotfix分支使用规范:可以从master分支派生必须合并回master分支和develop分支分支命名惯例:hotfix-*除了是计划外创建的以外,hotfix分支与release分支十分相似:都可以产生一个新的可供在生产环境部署的软件版本。当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作。这样做的显而易见的好处是不会打断正在进行的develop分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工作。版本发布与测试流程开发新功能(newfeature)每个新功能的开发,都要先创建一个feature分支,完成后再合并到develop分支上,假如这个新功能开发失败了,可以直接丢弃而不影响develop分支上的代码。在这个分支上,开发人员主要是开发新功能并进行单元测试(unittest),保证模块和功能的实现。当开发完成后,在合并到develop分支时,开发人员还要进行集成测试,也就是保证合并之后的系统不会出现兼容性问题。预备发布(release)当一个开发周期内的所有新功能(feature)已经开发完毕后就能从开发(develop)分支创建一个发布(release)分支。在发布分支上我们不再开发新功能,而是主要进行用户接受度测试(UAT),并作简单的调整。在测试人员对发布分支进行用户接受度测试的同时,开发人员可以继续对(develop)分支进行新功能的开发,互不干扰。当所有UAT都完成后,就能把release分支合并到master分支上,系统运维的人员就能从master分支上拿到最新版本的产品并进行部署了。热修复(hotfix)再多的测试也不能保证发布的产品完全没有任何bug,假如在master分支运行期间出现了bug,就要在master分支上创建一个hotfix分支,修复这个bug,然后合并到master分支上,热修复(hotfix)就像是微软不定期发布的补丁一样。其作用就是修复master分支上出现的bug流程总结1.功能开发和非紧急问题修复,均以特性分支的形式进行,将特性分支提交至GIT远程服务器,以便小组协作,开发完成自测通过后,由后端人员负责合并回develop分支。在合并之前会有一次代码审核,通过之后才可以合入;2.测试人员在develop分支上进行联合测试,测试完成后将测试完成功能最后一个版本之前的所有代码合并至release分支;从develop合入release之前,确保产品功能OK,release功能只做BUG修复。从develop-release若冲突,开发解决,忠信负责协助以及确保流程顺畅;若无冲突,测试解决,忠信负责协助以及确保流程顺畅。3.第2步中合并完成后测试人员需在release分支上做验收测试,如有BUG问题,研发需在release分支上修复,修复后验证通过,需由对应的后端人员(如无则需让GIT管理员来操作)将release分支合并回develop分支;如有需求变更或需求理解错误等其他耗时较长问题,需回develop分支重开特性分支处理;4.版本发布阶段,将release分支合并至master分支,发布至预发布服(目前140),进行线上验收工作,如有问题在release分支进行修复,验证通过后合并release分支回develop和master分支,并发布至预发布服再次验证;release合入到master,由测试同学完成,忠信前期负责协助以及指导确保流程顺畅。需注意问题1.研发在把特性分支合并至develop分支之前,必须与负责该特性测试的同事沟通,确认在合并之后测试人员可以马上开始测试方能合并;(此举是防止develop分支上存在没有测试介入测试的需求特性,干扰其他特性测试与分支合并)2.功能特性在develop分支上通过完整测试无BUG,才能由测试人员知会对应研发人员或GIT管理员,将对应功能特性的代码由develop分支合并至release分支,测试人员在release分支上需再进行简单的验收测试;
本文标题:GIT Flow分支与流程说明
链接地址:https://www.777doc.com/doc-2874276 .html