浅析GitLab Flow的十一个规则

使用 Git 版本控制,是对使用它之前的所有版本控制方式的一种改进。然而,很多组织最终以太过混乱或过于复杂的流程来结束。这个问题对于刚从其他版本控制系统转过来的组织来说特别突出。

在本文中我们会列出 GitLab 工作流 的11条规则,以帮助简化、整理工作流程。这些规则最主要的益处是(或我们希望是) 它能够简化流程并且产生一个更高效和更清楚的成果。

我们认为总会有可改善的空间,并且每一次改善都是草案。一如既往,每个人都可以做出贡献!反馈和提意见是非常受欢迎的。

1. 使用功能分支,不直接提交到master

如果你从 SVN过来,例如,你将习惯于基于trunk的工作流。当使用Git的时候,你应该为你做的任何事情创建一个分支,以便你以merge前的代码评审作为结束。

2. 测试所有的提交,不仅仅是master上的提交

一些人设置他们的CI仅仅测试那些被合并到master的提交。这太迟了;对于master总是绿色的测试人们应感到有信心。对人们来说在他们开始开发新功能前不得不测试master是没有意义的,例如,CI不是很昂贵,所以按这种方式做才有意义。

3. 在所有的提交上运行所有的测试(如果运行测试多于5分钟,并行运行它们)

如果你工作在一个特性分支并添加新提交,然后在那个分支运行测试。如果测试花费较长时间,试着并行的运行它们。在服务端的合并请求运行所有的测试套件。如果你有一个服务于开发的测试套件,另一个仅仅是对新版本的,那么值得设置并行测试,分别运行它们。

4. 在合并到master前执行代码评审,而非事后

不要在一周结束的时候测试所有的东西。 当场做,因为你会更容易抓住可能导致问题的事情,其他人也会努力想出解决方案。

5. 部署是自动的,基于分支或基线

如果你不想每次部署master,可以创建一个生产分支。但是这里没有理由为什么你可能使用一个脚本或登录到某个地方手动部署。让一切自动化,或者一个特定的分支触发一次生产部署。

6. 基线是人为创建,而不是CI创建

用户创建一个基线,基于那个基线,CI将执行一个操作。你不应该让CI更改代码仓库。如果你需要非常详细的指标,您应该有一个服务器报告列出了新版本。

7. 依赖tags版本进行发布

如果你为你的项目生成tag,这表示你发布了一个新版本。

8.绝不以重置方式提交变更

如果你将一个项目的变更提交到一个公共的分支上,你不应该使用重置方式(即不应用 git rebase),否则将造成难以追踪你对该项目的改善和相应的测试结果,这样做实际上破坏了他人选择最有利于的版本的依据。

我们有时也违反这条准则,当我们要求一个贡献者使用(git merage --spansh)提交他的修改,以便提供真实的修改历史,忽略他本地不规范的修改历史时。这样做以后查阅修改历史时,容易根据修改历史做版本恢复。但是总而言之 推荐做法为:代码应该纯净,修改历史应该真实。

9. 每个人都应该从主支开始,并一直以主支为基础

这意味着你不从任何分支开始。你检出主支内容,然后创建你的特性,提交你的合并请求,下次修改还是以主支为基础。在你合并内容到主枝上时,你应该完成审查,不应该包含其他中间阶段的内容。

10. 先修改主支中的错误,之后发布分支

如果你发现一个bug,最差的事是你修改了刚发布的版本,而未修改主支。

避免这种情况发生,你应该总是先修改主枝,之后再发布另外一个版本用来修复已发布版本中的错误。

11. 提交的信息中反应你修改部分的意图

你应该不止说明你做了什么,还应该说明你为什么这么做。如果你解释为什么这么做而没有使用其他方式,这将会更有用。

本文转载地址:http://www.linuxprobe.com/eleven-rule-gitlab.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

时间: 2024-08-07 13:42:06

浅析GitLab Flow的十一个规则的相关文章

Dynamics CRM2016 业务流程之Task Flow(二)

接上篇,Page页设置完后,依照业务流程管理也能够继续设置Insert page after branch 或者 Add branch,我这里选择后者.并设置了条件,假设Pipeline Phase 字段的值包括develop则换个一个page页显示,新的page页仅仅放一个字段以示区分. 来看下效果.第一个page的字段符合branch的条件,点击next后显示第二个page,而description字段的值就是Test,而这个Test值的由来则是后面要讲要的业务规则.第二幅图中点击done表

双十一为何规则复杂,套路多多

为啥不直接打5折?为了让你把“穷人”俩字写到自己脸上啊. 双十一快到了,今年我又一次有了不太想参加的感觉.作为一个阅读理解不太灵光的人,去年的活动我就整得不太明白——优惠券都是十块十块的,也不知道该咋用;还有预付款.整点秒杀之类的,感觉很麻烦.最后虽然省了一半的钱,但是死了好多脑细胞. 今年的活动更复杂了: 活动规则也是看得我想死,不信看我的手机截屏: 我数了一下,一共 4009 个字. 还记得双十一这个“传统”佳节刚出来的时候,是怎么做活动的吗?对,就是直接打 5 折.多简洁啊! 那么问题来了

[GIT] Git 工作流程(Git flow, Github flow flow, Git lab flow)

reference : http://www.ruanyifeng.com/blog/2015/12/git-workflow.html Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去."工作流程"在英语里,叫做"workflow"或者"flow",原意是水流,比喻项目像水流那样,顺畅.自然地向前流动,不会发生冲击.对撞.甚至漩涡. 本文介绍三种广泛使用的工作流程

软件工程第三次作业

本周的作业请参照此文:http://www.ruanyifeng.com/blog/2015/12/git-workflow.html 制定本组项目的GitHub版本更新流程. 制定本组的代码规范.GitHub提交源码的标准. 组长组织每周例会(可以使用群微信群试验一下每天沟通项目开发进度的方法)需要有证据能够在博客上公布 根据邹欣老师的教材相关内容,确定小组成员的角色,细化项目需求.时间计划.列出产品积压工作项和预计开发时间 第一题:制定本组项目的GitHub版本更新流程 通过学习链接中的内容

现代软件工程 第3-6章 作业

1.GitHub版本更新流程 题目:请参照此文:http://www.ruanyifeng.com/blog/2015/12/git-workflow.html 制定本组项目的GitHub版本更新流程. 广泛使用的工作流程有Git flow.Github flow和Gitlab flow.比较了三种工作流程,我们选择了Github flow流程.有以下几点原因: 1.项目规模较小,用Git flow的简化版就能达到我们的需要. 2.它长期只有一个分支 master,利于管理 3.因为项目要不断修

Git 工作流规范参考

目录 引子 介绍 什么是成功的 Git 工作流 Git 工作流 GitHub 工作流 GitLab 工作流 规范参考 环境划分 分支策略 修复 bug 策略 其它情况处理 另外一种思路 规范参考简化 规范参考增强 参考资料 引子 本以为使用 Git 的工作流规范依据很普遍了,发现事实并不是那样.找了些资料,结合实际的工作情况,尝试整理出一个规范. Origin My GitHub 介绍 Git 工作流是一个如何使用 Git 以一致和高效的方式来完成工作的建议.在 Git 管理的项目中与团队合作时

OVS处理upcall过程分析

处理upcall的整体框架是: 1.由函数handle_upcalls()批量处理(in batches)的是由内核传上来的dpif_upcalls,会解析出upcall的类型.这里主要看在内核中匹配流表失败的MISS_UPCALL.处理完成后会得到多个flow_miss. 结构体dpif_upcall代表的是由内核传到用户空间的一个包,包括上传原因,packet data,以及以netlink attr形式存在的键值. struct dpif_upcall { /* All types. */

別人寫的git的總結,寫自己這裡學習用

這裡是原文,http://www.cnblogs.com/ang-/p/7352909.html 貼這裡慢慢學. git入门大全 阅读目录 前言 基本概念 文件几种状态 创建新仓库 配置 检出仓库 新建仓库常见流程 gitignore 添加.删除 提交 branch tag 远程仓库和合并分支 改写提交 暂存 撤销 diff log 其他命令 git内部 git提交规范 三种工作流程 命令行 参考 前言 以前写个一个git小结,但是实际上并不够用.于是结合实际工作上碰到的一些情况,参考了一些资料

Git 工作流程

转载:http://www.ruanyifeng.com/blog/2015/12/git-workflow.html Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去."工作流程"在英语里,叫做"workflow"或者"flow",原意是水流,比喻项目像水流那样,顺畅.自然地向前流动,不会发生冲击.对撞.甚至漩涡. 本文介绍三种广泛使用的工作流程: Git flo