版本管理之gitlab实践教程:进阶篇(2)

github flow实践

git flow的问题

git flow是一个较早的版本管理模型,但是也有一些实际在使用上的问题。第一个常见的问题就是因为git flow的模型设计是围绕着release进行的,所以master成为了一个
用于保存向生产环境发布代码的分支,而真正的主分支我们使用的是develop分支而不是master分支,但是无论是交流上还是一些工具的缺省设定,一般都会直接使用master,
这跟我们通常的说法不同,所以每次都需要解释:这种分支模型的develop分支就是经常意义上的master主分支。
而另外一个问题则是git flow模型还是较为复杂,对于缺乏版本管理知识的普通开发者来说,学习曲线和使用成本较高。
随着持续集成和持续部署在很多项目中的推动,项目越来越多进行持续的发布,而像传统的开发方式那样,同时多功能合并在一个大版本中一起发布的情形越来越少,
取而代之的则是小步快跑,持续集成结合继续部署,使得传统模式下复杂分支管理的需求变得越来越少,很多时候只需要一个master分支即可,而正是这种情况则是github flow提出的原因。

github flow产生的契机

正如Scott Chacon在他的文章中提到的那样:既然已经有git flow了,为什么github不是直接用git flow就好了呢?这个模型过于复杂,项目实际需要的似乎比其简单的多。
于是在这个基础之上,在github,他们没有使用git flow,而是使用了一个更加简单的git工作流程,这个简化的模型就是github flow。
而且更为重要的原因,围绕着release设计的fit flow模型对github来说缺乏吸引力的重要原因是release对github来说从来都不是问题而也也没有成为问题过,每天github都可以release多次,
他们甚至可以通过hobot机器人自动做到这些,整个部署的流程对每个开发者来说都不是什么问题,持续集成的基础已经非常的好,所以在这个基础之上,会理所当然地认为更为简单的模型就能够解决这个问题。
这里写图片描述

git flow的主要特点

长期分支

github flow只有一条master长期分支用于管理随时可以进行发布的分支,在master分支上的一切都被认为是可以随时可以进行部署到生产环境的内容。

临时分支

github flow不同于git flow存在release/hotfix/feature三类分支,github flow只有一种分支就是特性分支。无论是bug修正还是特性开发在github flow中都是特性分支。

Pull Request

github的Pull Request分支提供了一种review和合并的机制,在gitflow中,这种机制也被使用地淋漓尽致。github flow使用Pull Request用于取得feedback以及合并。

github flow使用方式

github flow在使用时主要遵循如下方式:
第一:只有可以部署的内容才会放到master分支上,所以master分支上的任何内容都是可部署的。

第二:特性分支的创建需要以master为基础,同时特性分支的命名需要意义清晰,容易理解。

第三:特性分支需要经常更新到远程仓库中,远程仓库中的特性分支应与本地特性分支名称相同。

第四:当需要反馈或者帮助的时候,或者当分支已经可以进行合并的时候,随时可以开启一个pull request。

第五:仅当pull request通过review之后才进行合并。

第六:一旦合并之后并推送到master分支,则意味着此内容已经随时可以进行部署,根据持续集成的原则,可以也应当立即进行部署。

github flow的模拟使用

接下来我们使用gitlab10.4.2以及git1.8.3.1来模拟一下github flow开发的流程。

创建一个项目

首先我们使用gitlab的restapi创建一个项目,当然也可以直接在gitlab上进行图形界面操作,具体命令如下,请根据自己的gitlab的URL和token进行修改, 另外jq命令如果没有可以不使用,对结果不产生影响,仅仅对结果的显示格式进行整形而已

执行命令

curl –request POST –header “PRIVATE-TOKEN: sqiSUhn3tHYXe8nSGRDi” –data “name=githubflowmodel” “http://127.0.0.1:32001/api/v4/projects” |jq .

执行log

[root@devops ~]# curl --request POST --header "PRIVATE-TOKEN: sqiSUhn3tHYXe8nSGRDi" --data "name=githubflowmodel" "http://127.0.0.1:32001/api/v4/projects" |jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1931  100  1911  100    20   1139     11  0:00:01  0:00:01 --:--:--  1140
{
  "id": 3,
  "description": null,
  "name": "githubflowmodel",
  "name_with_namespace": "Administrator / githubflowmodel",
  "path": "githubflowmodel",
  "path_with_namespace": "root/githubflowmodel",
  "created_at": "2018-02-04T19:15:18.826Z",
  "default_branch": null,
  "tag_list": [],
  "ssh_url_to_repo": "git@3ff5a6afdc80:root/githubflowmodel.git",
  "http_url_to_repo": "http://3ff5a6afdc80/root/githubflowmodel.git",
  "web_url": "http://3ff5a6afdc80/root/githubflowmodel",
  "avatar_url": null,
  "star_count": 0,
  "forks_count": 0,
  "last_activity_at": "2018-02-04T19:15:18.826Z",
  "_links": {
    "self": "http://3ff5a6afdc80/api/v4/projects/3",
    "issues": "http://3ff5a6afdc80/api/v4/projects/3/issues",
    "merge_requests": "http://3ff5a6afdc80/api/v4/projects/3/merge_requests",
    "repo_branches": "http://3ff5a6afdc80/api/v4/projects/3/repository/branches",
    "labels": "http://3ff5a6afdc80/api/v4/projects/3/labels",
    "events": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值