使用 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. 宝塔面板php扩展安装

    yum install libmcrypt libmcrypt-devel mcrypt mhash wget http://pecl.php.net/get/mcrypt-1.0.1.tgz tar ...

  2. DDL DML DCL DQL的区别

    原文章出处:http://blog.csdn.net/tomatofly/article/details/5949070 SQL(Structure Query Language)语言是数据库的核心语 ...

  3. [hdu5251]矩形面积 旋转卡壳求最小矩形覆盖

    旋转卡壳求最小矩形覆盖的模板题. 因为最小矩形必定与凸包的一条边平行,则枚举凸包的边,通过旋转卡壳的思想去找到其他3个点,构成矩形,求出最小面积即可. #include<cstdio> # ...

  4. HDU 6029 Graph Theory

    贪心. 每次找到后面最近的一个能连边的连边. #include <bits/stdc++.h> using namespace std; ; int T,n,k; ],b[],u[]; i ...

  5. Python并发编程-进程池及异步方式

    进程池的基本概念 为什么有进程池的概念 效率问题 每次开启进程,都需要开启属于这个进程的内存空间 寄存器,堆栈 进程过多,操作系统的调度 进程池 python中的 先创建一个属于进程的池子 这个池子指 ...

  6. 【记录】mybatis-generator如何使用(maven方式)

    1.首先在pom.xml中添加插件 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId ...

  7. Selenium快速入门(下)

    Frame相关 import time from selenium import webdriver from selenium.common.exceptions import NoSuchElem ...

  8. 「2017 山东一轮集训 Day4」基因

    设置 \(\sqrt{n}\) 个关键点,维护出关键点到每个右端点之间的答案以及Pam的左指针,每次暴力向左插入元素即可,为了去重,还需要记录一下Pam上每个节点在每个关键点为左端点插入到时候到最左边 ...

  9. Spring Boot中Request method 'PUT' not supported

    在项目中使用restful风格put提交时报错,是由于form表单中的th:href引起的(支持post提交),改为th:action即可

  10. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) A. Little Artem and Presents 水题

    A. Little Artem and Presents 题目连接: http://www.codeforces.com/contest/669/problem/A Description Littl ...