零、gitlab简介
 
Gitlab是一个成熟的代码管理工具。为企业和组织提供内部的源代码的存储和管理功能。
 
 
 
 
一、gitlab角色总览
 
gitlab中的角色分管理员和使用者,管理员即administrator(root)用户,使用者分创建者(owner)、维护者(maintainer)、开发者(developer)、reporter(不知道怎么翻译才好)、访客(guest)。
 
下表列出了所有使用者所拥有的权限,常规开发中,我们一般仅使用owner、maintainer、developer这三个角色。
权限
Guest
Reporter
Developer
Maintainer
Owner
Create new issues 创建议题
*
*
*
*
*
Leave comments  在线留言
*
*
*
*
*
Pull the project code  拉取代码
 
*
*
*
*
Download a project   下载项目zpi包
 
*
*
*
*
Create code snippets  创建代码片段
 
*
*
*
*
Create new merge requests 提交合并请求
 
 
*
*
*
Push changes to nonprotected branches 向未受保护的分支推送代码
 
 
*
*
*
Remove nonprotected branches  删除未受保护的分支
 
 
*
*
*
Add tags   添加标签
 
 
*
*
*
Write a wiki    写说明
 
 
*
*
*
Manage the issue tracker 管理议题
 
 
*
*
*
Add new team members    添加成员
 
 
 
*
*
Push changes to protected branches  向受保护的分支推送代码
 
 
 
*
*
Manage the branch protection  管理受保护的分支
 
 
 
*
*
Manage Git tags  管理标签
 
 
 
*
*
Edit the project   编辑项目信息
 
 
 
*
*
Add deploy keys to the project   添加项目部署密钥
 
 
 
*
*
Configure the project hooks   配置项目的钩子调用
 
 
 
*
*
 
gitlab名词解释:
  • 项目:项目即代码仓库,一般一个代码仓库对应一个代码工程
  • 受保护分支:“受保护”是相对而言,一般来说,受保护主要体现在以下方面:开发者角色是否可以push代码;开发者角色是否可以对已创建的合并请求操作合并
 
 
二、代码仓库管理思路
 
总体思路:
  • 项目经理承担owner角色,负责创建代码仓库
  • 项目经理酌情指派一名核心开发人员为maintainer角色,负责此代码仓库的日常管理如添加开发者、审核合并请求。目的是为了分担项目经理在代码管理方面的工作,建议不要肆意分配maintainer角色,因为该角色权力太大
  • 项目开发人员分配developer角色,负责代码开发和提交合并请求
  • 仅参与此项目的人员才分配角色,不参与此项目的人员无权查看
 
新项目代码仓库管理流程:
 
  • 项目经理创建代码仓库 
  • 项目经理(或maintanier)添加开发人员
  • 项目经理(或maintanier)基于master分支创建dev分支
  • 开发人员基于dev分支创建feature分支
  • 开发人员克隆gitlab中的仓库到本地
  • 开发人员提交代码到本地仓库
  • 开发人员push本地仓库到远程(gitlab)仓库 
  • 开发人员提交合并请求源分支为feature,目标分支为dev 
  • 项目经理(或maintanier)审核合并请求将多个feature分支代码合并到dev分支 
  • 项目经理(或maintanier)基于dev分支创建test分支
  • 测试人员在test分支上做功能测试
  • 开发人员基于test分支创建fixbug分支修改bug 
  • 开发人员提交合并请求,源分支为fixbug,目标分支为test 
  • 项目测试完毕 
  • 项目经理(或maintanier)创建prod分支做预发布测试
  • 发布完毕,创建tag
  • 项目经理(或maintanier)将prod分支合并到master分支
 
 
老项目迭代开发代码仓库管理流程:
  • 项目经理(或maintanier)基于已有代码仓库创建dev分支
  • 项目经理(或maintanier)添加开发人员
  • 开发人员基于dev分支创建feature分支
  • 开发人员克隆gitlab中的仓库到本地
  • 开发人员提交代码到本地仓库
  • 开发人员push本地仓库到远程(gitlab)仓库 
  • 开发人员提交合并请求,源分支为feature,目标分支为dev 
  • 项目经理(或maintanier)审核合并请求将多个feature分支代码合并到dev分支 
  • 项目经理(或maintanier)基于dev分支创建test分支
  • 测试人员在test分支上做功能测试
  • 开发人员基于test分支创建fixbug分支修改bug 
  • 开发人员提交合并请求,源分支为fixbug,目标分支为test 
  • 项目测试完毕
  • 项目经理(或maintanier)创建prod分支做预发布测试
  • 发布完毕,创建tag
  • 项目经理(或maintanier)将prod分支合并到master分支
 
三、分支管理思路
 
分支种类:
  • master:主分支,是受保护分支,不可直接push
  • dev:开发分支,基本上可以跟着迭代走,每一个迭代一个dev分支,dev分支从master分支创建。是受保护分支,不可直接push
  • feature:特性分支,也即功能开发分支,一般情况下feature和dev分支是如影随形关系。feature从dev分支创建,开发人员在feature分支开发代码,开发完毕提交MergeRequest,拥有合并权限(即maintainer角色)的开发人员(开发组长、项目经理等)完成代码审核(非必须)并合并到dev分支,运维人员在jenkins中构建dev分支,这样开发的功能就部署到开发环境了。
  • test(或者叫release):测试分支,用于部署到测试环境的分支,从dev分支创建,是受保护分支,不可直接push。test分支代码测试完毕,合并到master。
  • fixbug:bug修复分支,用于修改测试过程中测试人员提交的bug,从test分支创建,是修改bug的开发人员工作分支。
  • hotfix://todo
  • prod://todo
 
 
 
  基于实际开发场景,feature分支和fixbug分支为可选项,例如如果本次迭代功能少,周期短,参与人员不超过3个人,完全可以都在dev分支上面开发,在test分支上面改bug,引入feature分支和fixbug分支反而产生了负担。
 
 
分支取名:
  • 分支名包含三部分:分支类型,8位日期,分支描述
  • 8位日期如20211024
  • 分支描述用简洁小写英文单词或者汉语拼英首字母小写,中间用横线隔开
 
例如:feature-20211024-car-management
 
 
 
 
 

Gitlab使用说明的更多相关文章

  1. 持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

    转载:https://www.abcdocker.com/abcdocker/2065 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkin ...

  2. 一键部署基于GitLab的自托管Git项目仓库

    https://market.azure.cn/Vhd/Show?vhdId=9851&version=11921 产品详情 产品介绍GitLab https://about.gitlab.c ...

  3. Dockerfile+Jenkinsfile+GitLab轻松实现.NetCore程序的CI&CD

    一.相关介绍 Dockerfile:关于Dockerfile的使用说明,我在文章<让.NetCore程序跑在任何有docker的地方>中有说到,这里不在赘述,需要的可以先看下,本文主要介绍 ...

  4. CentOS8.1中搭建Gitlab服务器

    依旧是写在前面的话♠:很多IT人从业N年也许都还没有亲自搭过一次Gitlab服务器,是不是?有木有?!通常都是背着自己的笔记电脑到一家公司入职,或入职后领到公司分配的电脑,然后分配了Git账号,拿了将 ...

  5. 将 maven repo 部署到 Gitlab

    为什么要将 maven repo 部署到 Gitlab 将 Maven artifacts 放在对应的项目仓库下,而不是专门再去建一个 Maven 仓库.这么做使用起来更方便,更易于管理. 借助 Gi ...

  6. Atitit.项目修改补丁打包工具 使用说明

    Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...

  7. 创建SSH Key连接github或gitlab

    mac下用SoureceTree下载github或gitlab上的项目时,需要进行ssh key验证.每次重装系统啥的都要重新弄,我在csdn上看到一篇不错的文章.转载一下,以后自己找起来也方便. 地 ...

  8. 【补充】Gitlab 部署 CI 持续集成

    上一篇:<劈荆斩棘:Gitlab 部署 CI 持续集成> 上一篇所配置的.gitlab-ci.yml: stages: - build - test before_script: - ec ...

  9. 劈荆斩棘:Gitlab 部署 CI 持续集成

    阅读目录: install configue gitlab-ci-multi-runner restore nuget packages bulid .sln run unit tests confi ...

  10. svn迁移gitlab,构建前端打包发布流程

    前端资源迁移     目前公司的前端资源托管在svn服务器上,由于团队的逐渐扩大,svn的分支管控越来越不灵活,而且对于以后前端流程一体化的处理支持不是很好,因此决定在版本控制上转向git.git的好 ...

随机推荐

  1. 打破联接壁垒,华为云IoT到底强在哪

    摘要:先哲说,万物莫不相异,而在今天,万物也可相通. 本文分享自华为云社区<打破联接壁垒,华为云IoT到底强在哪?>,作者:华为IoT云服务. "凡物莫不相异", 是十 ...

  2. MyBatis batchInsert 批量插入数据

    mybatis 是一个 Java 的持久层框架,它支持定制化 SQL.存储过程以及高级映射.通过 MyBatis,开发者可以直接编写原生态 SQL,避免了 JDBC 代码的繁琐. 如何在 MyBati ...

  3. PPT 年终总结PPT 应该怎么样改

  4. Python 将省、市 json 替换 成拼音

    1.将 city_code_cn.json 中的省.市.区,翻译成英文,或直接替换去掉省.市 如:苏州市  -> 苏州 转成拼音后就变成 Suzhou,否则就会转成 Suzhoushi 怪怪的 ...

  5. Go--变量的声明

    Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性. 变量是一段或多段用来存储数据的内存,在go中,变量一旦被定义,一定要使用,不然会报错 内建变量类型 ...

  6. Jetpack初步了解

    1.为何要引入Jetpack呢? 通常来说,一个Android应用程序至少需要一个Activity,当我们开发小型Android程序时,可能会将大部分代码写在Activity/Fragment中,例如 ...

  7. C++岗位面试真题宝典 -- 语言基础篇

    一.C++语言基础 1.1.1 简述下C++语言的特点 参考回答: C++在C语言基础上引入了面对对象的机制,同时也兼容C语言. C++有三大特性(1)封装.(2)继承.(3)多态: C++语言编写出 ...

  8. Android 原生 SQLite 数据库的一次封装实践

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/CL4MsQEsrWS8n7lhXCOQ_g作者:Li Bingyan 本文主要讲述原生SQLi ...

  9. 三、swift大对象--动态大对象

    系列导航 一.swift对象存储环境搭建 二.swift添加存储策略 三.swift大对象--动态大对象 四.swift大对象--静态态大对象 五.java操作swift对象存储(官网样例) 六.ja ...

  10. cookie和token验证区别