如何在gitlab上使用hooks
参考链接:gitlab git hooks
1. Git Hook 介绍
与许多其他版本控制系统一样,Git 有一种方法可以在发生某些重要操作时,触发自定义脚本,即 Git Hook(Git 钩子)。

当我们初始化一个项目之后,.git 目录下有一个 hooks 目录,可以看到上图左侧有很多执行任务,比如 pre-commit,代表在运行这些命令之后或之前,会进行一些校验和检测来执行相应任务。
Git Hook 分为两部分:本地和远程,如下图所示:
本地 Git Hook,由提交和合并等操作触发:
- 比如代码发生变更,进行 git add,把 message 进行 commit changes;
- 当 git commit 时,就会执行一个钩子叫 pre-commit(准备提交钩子)。
远程 Git Hook,运行在网络操作上,例如接收推送的提交:
- 在 commit 之后,要推送到远端,此时有一个叫 pre-push 钩子,把信息推送 git 仓库;
- 在远程阶段,极狐GitLab 相当于一个远程仓库。如图有很多仓库,分别承担不同功能,比如 pre-receive ,主要在服务器端接收通过本地推上来代码,然后 update 相关代码,post-receive 说明代码接受成功,同时有一个服务器钩子执行。
在这里,我们主要关注本地 hook,比如说 pre-message 和 pre-push,因此我们会借助这些工具来实现规范化代码内容。
2. 实战操作
2.1 gitlab配置
参考git hooks
gitaly['custom_hooks_dir'] = "/var/opt/gitlab/gitaly/custom_hooks"
gitlab-ctl reconfigure
2.2 编写脚本
功能说明:对git的commit信息的前缀做限制
mkdir -p /var/opt/gitlab/gitaly/custom_hooks/pre-receive.d/
cat /var/opt/gitlab/gitaly/custom_hooks/pre-receive.d/pre-receive.sh
#!/bin/bash
while read oldrev newrev refname; do# 从标准输入读取每个引用的旧版本、新版本和引用名称commits=$(git rev-list --pretty=oneline $oldrev..$newrev)# 遍历每个提交信息while read commit; do# 提取提交信息的前缀prefix=$(echo "$commit" | awk '{print $2}' | awk -F ":" '{print $1}')# 检查前缀是否符合要求if [[ $prefix != "feat" && $prefix != "fix" && $prefix != "hotfix" ]]; thenecho "Error: Invalid commit prefix in one or more commits:"echo "$commit"echo "Only commits with prefixes 'feat', 'fix', or 'hotfix' are allowed."exit 1fidone <<< "$commits"
done
给脚本权限,重启gitlab
chown -R git.root /var/opt/gitlab/gitaly/custom_hooks/pre-receive.d
chmod +x git.root /var/opt/gitlab/gitaly/custom_hooks/pre-receive.d/pre-receive.sh
3. 测试
测试提交

回退commit

再次提交

相关文章:
如何在gitlab上使用hooks
参考链接:gitlab git hooks 1. Git Hook 介绍 与许多其他版本控制系统一样,Git 有一种方法可以在发生某些重要操作时,触发自定义脚本,即 Git Hook(Git 钩子)。 当我们初始化一个项目之后,.git…...
【点云surface】 凹包重构
1 处理过程可视化 原始数据 直通滤波过滤后 pcl::ProjectInliers结果 pcl::ExtractIndices结果 凹包结果 凸包结果 2 处理过程分析: 原始点云 ---> 直通滤波 --> pcl::SACSegmentation分割出平面 -->pcl::ProjectInliers投影 --> pcl::ConcaveHull凹包…...
Linux sed命令
目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符,整合数据为一行 一. 去除单个指定文本的换行符 👉 info.txt …...
Nginx反向代理实现负载均衡+Keepalive实现高可用
目录 实现负载均衡 实现高可用 实现负载均衡 Nginx的几种负载均衡算法: 1.轮询(默认) 每个请求按照时间顺序逐一分配到下游的服务节点,如果其中某一节点故障,nginx 会自动剔除故障系统使用户使用不受影响。 2.权重…...
实用高效 无人机光伏巡检系统助力电站可持续发展
近年来,我国光伏发电行业规模日益壮大,全球领先地位愈发巩固。为解决光伏电站运维中的难题,浙江某光伏电站与复亚智能达成战略合作,共同推出全自动无人机光伏巡检系统,旨在提高发电效率、降低运维成本,最大…...
Django框架之csrf跨站请求
目录 一、csrf跨站请求伪造详解 二、csrf跨域请求伪造 【1】正常服务端 【2】钓鱼服务端 三、csrf校验 【介绍】 form表单中进行csrf校验: 【1】form表单如何校验 【2】ajax如何校验 四、csrf相关装饰器 【1】csrf_protect装饰器: 【…...
[系统移植] 移植主线Buildroot(2023.02-rc3)到RK3399
文章目录 一、编译环境二、Git环境三、克隆源代码四、编译源代码五、烧录固件六、系统启动一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev \ exube…...
自动语音识别 支持86种语言 Dragon Professional 16 Crack
从个体从业者到全球组织,文档密集型行业的专业人士长期以来一直依靠 Dragon 语音识别来更快、更高效地创建高质量文档,减少管理开销,以便他们能够专注于客户。了解 Dragon Professional v16 如何通过单一解决方案提高标准,为各个业…...
i社为什么不出游戏了?
I社,即国际知名的游戏公司,近来为何鲜有新游问世?曾经风靡一时的游戏开发者,如今为何陷入了沉寂?这其中的种种原因,值得我们深入剖析。 首先,I社近期的沉寂可能与其内部管理层的调整和战略规划…...
Harmony开发 eTs公共样式抽取
Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用,类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…...
Java中的方法
在Java中,方法是一个重要的概念,它用于组织和执行可重复使用的代码块。本文将详细介绍Java中方法的概念、定义和使用方法,以及一些常见的编程技巧和注意事项。 一、方法的概念 在Java中,方法是用来执行特定任务的代码块。它封装了…...
存算一体还是存算分离?谈谈数据库基础设施的架构选择
从一则用户案例说起 某金融用户问,数据库用服务器本地盘性能好还是外置存储好?直觉上,本地盘路径短性能应该更好。然而测试结果却出乎意料:同等中等并发压力,混合随机读写模型,服务器本地SSD盘合计4万 IOPS…...
go模版引擎的使用~~
go模板语句 以下是一些go语言模板引擎的一些简单知识和使用 基础语法 重要!!!: 模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页࿰…...
我们为什么要进行敏捷开发培训
敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化。进行敏捷开发培训其实有多种原因,我整理了一些,可以作为参考: 理解敏捷原则和实践: 敏捷开发不仅是一种方法论,更是一…...
【算法萌新闯力扣】:合并两个有序链表
力扣题目:合并两个有序链表 开篇 今天是备战蓝桥杯的第24天及算法村开营第2天。根据算法村的讲义,来刷链表的相关题目。今天要分享的是合并两个有序链表。 题目链接: 21.合并两个有序链表 题目描述 代码思路 通过创建一个新链表,然后遍历…...
BEV+Transformer架构加速“上车”,智能驾驶市场变革开启
BEVTransformer成为了高阶智能驾驶领域最为火热的技术趋势。 近日,在2023年广州车展期间,不少车企及智能驾驶厂商都发布了BEVTransformer方案。其中,极越01已经实现了“BEVTransformer”的“纯视觉”方案的量产,成为国内唯一量产…...
Java中的jvm——面试题+答案(JVM的一些高级概念、调优技巧、垃圾回收算法等)——第13期
当涉及到Java虚拟机(JVM)时,面试官可能涉及更深入的问题,涵盖性能调优、垃圾回收算法、类加载机制等方面。 什么是类加载机制?请解释类加载的过程。 答案: 类加载是将类的.class文件加载到内存中的过程&…...
Android修行手册-ViewPager定制页面切换以及实现原理剖析
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
Mycat实现读写分离
Mycat实现读写分离 Mycat支持MySQL主从复制状态绑定的读写分离机制。这里实现的也是基于MySQL主从复制的读写分离。 MySQL主从复制配置 首先要配置MySQL的主从复制,这里配置的是一主一次从。可以参考下面的文章。 https://blog.csdn.net/wsb_2526/article/detail…...
Ceph----CephFS文件系统的使用:详细实践过程实战版
CephFS 介绍 是一个基于 ceph 集群 且兼容 POSIX 标准的文件系统。 创建 cephfs 文件系统时 需要在 ceph 集群中添加 mds 服务,该服务 负责处理 POSIX 文件系统中的 metadata 部分, 实际的数据部分交由 ceph 集群中的 OSD 处理。 cephfs 支持以内核模块…...
SecGPT-14B环境部署:双4090显卡下tensor_parallel_size=2稳定运行配置
SecGPT-14B环境部署:双4090显卡下tensor_parallel_size2稳定运行配置 1. 环境准备与快速部署 在开始部署SecGPT-14B之前,我们需要确保硬件环境满足要求。本教程基于双NVIDIA RTX 4090显卡(24GB显存x2)配置,采用tenso…...
StructBERT中文匹配系统效果展示:多轮对话上下文语义一致性分析
StructBERT中文匹配系统效果展示:多轮对话上下文语义一致性分析 1. 项目概述 StructBERT中文语义智能匹配系统是基于先进孪生网络架构的本地化部署工具,专门针对中文文本相似度计算和语义特征提取需求而设计。与传统单句编码模型不同,该系统…...
GTE中文文本嵌入模型智能助手:客服工单语义聚类实战
GTE中文文本嵌入模型智能助手:客服工单语义聚类实战 1. 引言:从客服工单的烦恼说起 想象一下,你是一家电商公司的客服主管。每天,你的团队要处理成千上万条用户反馈和工单。用户的问题五花八门:“我的快递怎么还没到…...
OpenClaw本地搜索增强:Qwen3-14b_int4_awq理解模糊文件查询
OpenClaw本地搜索增强:Qwen3-14b_int4_awq理解模糊文件查询 1. 为什么需要智能文件搜索 作为一名长期与大量文档打交道的技术写作者,我经常陷入"记得内容但找不到文件"的困境。系统自带的搜索功能只能基于文件名或简单关键词匹配,…...
直播运营需要哪些数据分析能力?场观、停留、成交和投流怎么联动分析
直播运营数据分析的核心能力直播运营需要掌握多维度的数据分析能力,以优化直播效果并提升转化率。核心能力包括数据采集、清洗、可视化、建模及解读能力。CDA数据分析师证书的课程体系涵盖了这些核心技能,为从业者提供系统化训练。能力维度具体内容CDA相…...
主键、外键和约束:让数据库“有规矩”才能不出错!|转行学DB第5天
为什么你的表里会混进“奇怪的数据”?三分钟搞懂数据库的“家规”大家好呀!我是数据库小学妹👋一个正在从设计转行学数据库的"萌新"。 前几篇我们学会了建表、插数据、查数据。但有个问题一直让我头疼:我怎么保证同一张…...
OpenClaw+Phi-3-mini-128k-instruct:自动化竞品分析报告生成器
OpenClawPhi-3-mini-128k-instruct:自动化竞品分析报告生成器 1. 为什么需要自动化竞品分析 作为一位连续创业者,我深知保持市场敏感度的重要性。每周手动检查竞品网站、整理产品更新、制作分析报告,这个过程既耗时又容易遗漏关键信息。直到…...
FISCO BCOS节点扩容实战指南:从原理到操作全解析
引言:为什么需要节点扩容? 在区块链网络运营过程中,“如何在不中断服务的情况下扩展网络处理能力?”“能否实现节点的平滑扩容与缩容?”“怎样确保新节点快速同步数据?”——这些问题困扰着许多区块链运维人员。FISCO BCOS作为金融级联盟链平台,提供了完善的节点扩容机…...
红外遥控技术原理与工程实践详解
1. 红外遥控的基本原理红外遥控技术是现代电子设备中最常见的无线控制方式之一。它的核心原理是利用红外光作为信息载体,在发射端和接收端之间建立通信链路。这种看似简单的技术背后,其实蕴含着精妙的物理原理和电子设计。红外光的波长范围通常在700纳米…...
阻抗匹配原理与工程实践全解析
1. 阻抗匹配基础概念解析阻抗匹配是电子工程中最基础也最容易被忽视的技术要点之一。记得我刚入行时,第一次调试射频电路就栽在这个坑里——信号反射导致系统根本没法正常工作。阻抗匹配的本质,就是让信号源阻抗与负载阻抗达到共轭匹配状态,实…...
