使用gitlab做git flow及代码审查

1、分配成员角色
2、锁定受保护的分支
3、发起合并请求
4、审查合并请求;
5、处理合并请求
-------------------------------

1、分配成员角色:

首先来了解下,Git 中的五种角色:

Guest:访客,貌似没有什么权限;
Reporter:可以使用 git@172.18.2.121:test_group_001/top_proj_002.git 拉代码,但是不能push 到仓库的默认分支;
Developer:项目的开发人员,能够推送和删除 没有保护的分支,刚创建的分支  默认 都是没有保护的
Master:项目管理人员,可以对没有保护和有保护的 所有分支进行操作,几乎拥有所有权限;
Owner:系统管理员,拥有所有权限;

我们 需要做的是,为项目成员分配恰当的角色,以限制其权限。

每一种角色所拥有的权限都不同,如下图:
-----------------------------
 -------------------------------------

2、锁定受保护的分支:

在对 Git 不熟悉的时候,时常苦恼于各个分支不受约束,任何开发人员都可以向任何分支直接推送任何提交,各种未经审查的代码、花样百出的 Bug 就这样流窜在预发布分支上。

其实我们可以通过 GitLab 的受保护分支(Protected Branches)功能 解决该问题,该功能可用于:

  • 阻止 Master 角色以外的开发人员 直接向此类分支推送代码,保持稳定分支的安全性;
  • 在向受保护分支合并代码前,强制进行代码审查

接下来我们就使用这项功能,锁定我们的受保护分支——主分支 master 和预发布分支 release-*,以阻止 Developer 直接向这两类分支中推送代码:

--------------------------------------

 ------------------------------------

锁定后,Developer 推送代码将会报错:


$   git push origin master
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 1 (delta 0)
remote: GitLab: You are not allowed to access master!
remote: error: hook declined to update refs/heads/master
To git@website:project.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'git@website:project.git'

---------------------------------------

3、发起合并请求

第一步,新建合并请求;注意,对于 Developer 而言:

  • From 是你的特性分支 feature-*
  • To 只可能是预发布分支 release-*
  • Title 和 Description 要填写恰当的分支描述;
  • Assign to 是该项目的 Master。
-------------
 
---------------------------------------

4、审查合并请求
第二步,Master 收到合并请求后,进行代码审查。逐一查看   Commits  一栏提交的内容即可,对于需要改进的代码,可以直接在该行添加注释,非常方便。
 ---------------------

如果对整个请求还有疑问的地方,还可以通过底部的   Discussion  功能进行线上讨论。
 ---------------------
5、处理合并请求
第三步,针对审查结果进行相应处理:

1.关闭
   对于完全不合格的垃圾代码、或者废弃的特性分支的合并请求,Master 点击右上角的   Close  按钮即可。合并请求将被关闭,相当于扔进回收站。
2.改进
   对于分支内需改进的代码,Developer 直接修正并推送即可,合并请求将会自动包含最新的推送提交。

3.接受
   Master 审查无误后,可以接受该次合并请求。点击   Accept Merge Request 按钮 将自动合并分支,勾选  Remove source-branch 控件,将同时删除该特性分支

### GitFlow 工作流在 GitLab 中的应用场景及配置方法 #### 一、GitFlow 的核心概念 GitFlow 是一种流行的版本控制工作流,旨在通过定义清晰的分支结构来支持团队协作开发。其主要分支包括 `master` 和 `develop`,以及辅助分支如 `feature`、`release`、`hotfix` 和 `support`。这种复杂的分支模型能够很好地适应大型项目的生命周期需求。 在实际应用中,GitFlow 提供了一种标准化的方式来管理不同阶段的任务,例如新功能开发、测试准备和紧急修复等[^1]。 #### 二、GitFlowGitLab 中的具体实现方式 GitLab 支持多种工作流模式,其中包括对 GitFlow 的兼容性。以下是 GitFlow 如何与 GitLab 配合使用的具体说明: ##### 1. **分支命名约定** 为了更好地遵循 GitFlow 规范,在 GitLab 中可以设置严格的分支保护规则和命名策略。例如: - 主分支命名为 `main` 或 `master`。 - 开发分支命名为 `develop`。 - 功能分支以 `feature/` 前缀开头(如 `feature/add-login-page`)。 - 发布分支以 `release/` 前缀开头(如 `release/v1.0.0`)。 - 热修复分支以 `hotfix/` 前缀开头(如 `hotfix/fix-critical-bug`)。 这些命名约定可以通过 GitLab 的 CI/CD 配置文件 `.gitlab-ci.yml` 来强制执行[^2]。 ##### 2. **CI/CD 流程集成** GitLab 的内置 CI/CD 系统非常适合用于自动化构建、测试和部署过程。以下是一个典型的 GitFlow CI/CD 集成方案: - 当开发者提交新的功能分支时,触发自动化的单元测试和静态代码分析。 - 创建发布分支时,运行完整的回归测试套件,并生成预发布的工件。 - 合并到主分支后,启动最终的生产环境部署流水线。 下面展示了一个简单的 `.gitlab-ci.yml` 文件片段作为示例: ```yaml stages: - test - build - deploy run_tests: stage: test script: - pytest tests/ create_release_artifact: stage: build only: - /^release\/.*/ script: - npm run build artifacts: paths: - dist/ deploy_to_production: stage: deploy only: - main script: - ./deploy.sh production ``` 此配置确保了每一步都严格按照 GitFlow 的原则进行操作[^3]。 ##### 3. **Merge Request (MR) 审核机制** GitLab 的 Merge Request 功能允许团队成员审查彼此的变化。对于基于 GitFlow 的项目来说,应该特别注意 MR 的目标分支选择: - 特性分支应始终合并回 `develop` 分支。 - 发布分支应在完成所有必要的调整后再合并至 `main` 分支。 - 热修复可以直接应用于两个长期存在的分支 (`main`, `develop`) 上。 此外,还可以利用 GitLab 的 Code Owner 文件进一步增强审核流程的安全性和效率。 #### 三、常见挑战及其解决方案 虽然 GitFlow 能够提供强大的灵活性和支持能力,但在实施过程中也可能遇到一些困难。比如频繁切换上下文可能导致混乱;或者当多个并发更改发生冲突时难以处理等问题。针对这些问题,推荐采取如下措施: - 使用工具插件简化日常命令行交互体验。 - 制定详细的文档记录整个流程细节以便新人快速上手学习。 - 定期清理不再需要的历史分支以免资源浪费。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值