使用 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

最新文章

  1. IntelliJ idea创建Spring MVC的Maven项目
  2. 7.6 数据注解特性--StringLength
  3. C# 统计在线人数和总访问人数
  4. .Net中的泛型(where T : class的含义)
  5. 缓存工具CacheUtil - 并发环境的缓存值存取
  6. 用python+selenium将腾讯首页今日话题的内容自动发表到自己cnblog里
  7. Careercup - Google面试题 - 5162732873580544
  8. ListView返回选中的多项目
  9. js的变量作用域
  10. GridBagLayout的帮助类
  11. OAuth2.0 错误码
  12. iOS 按钮倒计时功能
  13. 2012天津E题
  14. windows 常用操作
  15. 关于AVL实现的代码记录
  16. Java集合系列[2]----LinkedList源码分析
  17. 五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍
  18. 一目了然呀的VS2017 Live Test
  19. SQL语句方法语法总结(一)
  20. Android开发 - 掌握ConstraintLayout(五)偏差(Bias)

热门文章

  1. 2017-2018-1 20179202《Linux内核原理与分析》第五周作业
  2. 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)I - B-旅行
  3. 2018IEEE冬季生物识别学校 5天课程
  4. 企业级SOA之路——在Web Service中使用HTTP和JMS
  5. hihocoder #1071 : 小玩具
  6. Yolov_3 网络结构分析
  7. bzoj 3238: [Ahoi2013]差异 -- 后缀数组
  8. python开发_copy(浅拷贝|深拷贝)_博主推荐
  9. iOS开发系列--音频播放、录音、
  10. Swift 闭包反向传值