使用 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. 提交的信息中反应你修改部分的意图

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

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

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

  1. 高效团队的gitlab flow最佳实践

    当前git是大部分开发团队的首选版本管理工具,一个好的流程规范可以让大家有效地合作,像流水线一样有条不紊地进行团队协作. 业界包含三种flow: Git flow Github flow Gitlab ...

  2. 大揭秘| 我司项目组Gitlab Flow && DevOps流程

    长话短说,本文全景呈现我司项目组gitlab flow && devops Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架. Dev ...

  3. Gitlab Flow到容器

    一.简介 长话短说,本文全景呈现我司项目组gitlab flow && devops Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架 ...

  4. Git版本控制 Git、github,gitlab相关操作

    目录 关于版本控制 版本管理工具 集中式管理 分布式管理 git版本管理 git介绍 软件安装 Git工作状态 原理流程步骤 git基本操作 对文件进行修改 分支 共享仓库 创建共享仓库: 共享仓库上 ...

  5. floodlight StaticFlowPusher 基于网段写flow,通配

    flow1 = { "switch":"00:00:00:00:00:00:00:03", "name":"flow-mod-1& ...

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

    接上篇,Page页设置完后,按照业务流程管理也可以继续设置Insert page after branch 或者 Add branch,我这里选择后者,并设置了条件,如果Pipeline Phase ...

  7. Choose GitLab for your next open source project

    原文:https://b.agilob.net/choose-gitlab-for-your-next-project/ GitLab.com is a competitor of GIthub. I ...

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

    reference : http://www.ruanyifeng.com/blog/2015/12/git-workflow.html Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必 ...

  9. Git Flow分支策略

    就像代码需要代码规范一样,代码管理同样需要一个清晰的流程和规范 Vincent Driessen 同学为了解决这个问题提出了 A Successful Git Branching Model 下面是G ...

随机推荐

  1. 洛谷P2296 寻找道路 [拓扑排序,最短路]

    题目传送门 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...

  2. DP 题集 1

    关于 DP 的一些题目 参考资料 [Tutorial] Non-trivial DP Tricks and Techniques DP Rain and Umbrellas Mr. Kitayuta, ...

  3. Unity 游戏开发技巧集锦之创建透明的材质

    Unity 游戏开发技巧集锦之创建透明的材质 Unity创建透明的材质 生活中不乏透明或者半透明的事物.例如,擦的十分干净的玻璃,看起来就是透明的:一些塑料卡片,看起来就是半透明的,如图3-23所示. ...

  4. 【BZOJ 3133】 3133: [Baltic2013]ballmachine (线段树+倍增)

    3133: [Baltic2013]ballmachine Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 148  Solved: 66 Descri ...

  5. 山东省第四届ACM程序设计竞赛A题:Rescue The Princess

    Description Several days ago, a beast caught a beautiful princess and the princess was put in prison ...

  6. bzoj1093 [ZJOI2007]最大半联通子图 缩点 + 拓扑序

    最大半联通子图对应缩点后的$DAG$上的最长链 复杂度$O(n + m)$ #include <cstdio> #include <cstring> #include < ...

  7. 所以学树分块的时候为什么要看vector啊sjb

    明明应该拼命刷题却悠哉补着vector和指针 -------------------------------------------------------------------题记 http:// ...

  8. CodeForces - 1016C Vasya And The Mushrooms

    题面在这里! 好久没有体会这种A题的快感了23333 一开始看错了,以为权值是从1开始的,不过这样不要紧,最后把算的答案减去两行数的和就是正确的答案了. 然后发现位于一个角上的时候,我们其实只有两种选 ...

  9. [转] Android 命名规范 (提高代码可以读性)

    Android命名规范编码习惯 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的 审查和修改过程中就会浪费 ...

  10. Codeforces Round #304 (Div. 2) D. Soldier and Number Game 数学 质因数个数

    D. Soldier and Number Game Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/conte ...