当前位置: 首页 > news >正文

maven 项目添加 git-hook 脚本,约束提交内容格式

git 提交代码,推送代码,可以通过在 .git/hooks 目录中的 bash 脚本来做一定的验证工作。

本例使用插件 maven-antrun-plugin 自动输出脚本至 .git/hooks 目录中,在 pom.xml 中的使用示例如下:

        <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><executions><execution><phase>generate-sources</phase><goals><goal>run</goal></goals><configuration><tasks><!-- 生成commit-msg文件 --><echo file="${basedir}/.git/hooks/commit-msg"message="#!/usr/bin/env bash${line.separator}${line.separator}"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="# Color codes${line.separator}red='\033[0;31m'${line.separator}yellow='\033[0;33m'${line.separator}blue='\033[0;34m'${line.separator}NC='\033[0m' # No colors"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="${line.separator}${line.separator}"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="# Regex &amp; Usage${line.separator}commit_regex=&quot;^(\[[A-Za-z]+\-[0-9]+\]|merge|Merge)\s&quot;${line.separator}error_message=&quot;Aborting commit. Commit message must start with ${yellow} 开发任务编号&quot;${line.separator}usage=&quot;开发任务编号 Commit Message. \n${blue}示例: [TASK-101] 完成A功能开发&quot;"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="${line.separator}${line.separator}"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="if ! grep -qE &quot;$commit_regex&quot; &quot;$1&quot;; then${line.separator}"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="  printf &quot;${red}$error_message\n&quot;${line.separator}"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="  printf &quot;${yellow}Commit Regex: ${NC}${commit_regex}\n&quot;${line.separator}"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="  printf &quot;${red}Usage: ${NC}${usage}\n&quot;${line.separator}"/><echo file="${basedir}/.git/hooks/commit-msg" append="true"message="  exit 1${line.separator}fi"/><!-- 生成pre-push文件 --><echo file="${basedir}/.git/hooks/pre-push"message="#!/usr/bin/env bash${line.separator}${line.separator}"/><echo file="${basedir}/.git/hooks/pre-push" append="true"message="# Color codes${line.separator}red='\033[0;31m'${line.separator}yellow='\033[0;33m'"/><echo file="${basedir}/.git/hooks/pre-push" append="true"message="${line.separator}${line.separator}"/><echo file="${basedir}/.git/hooks/pre-push" append="true"message="command=&quot;./mvnw.cmd clean test&quot;${line.separator}${command}"/><echo file="${basedir}/.git/hooks/pre-push" append="true"message="${line.separator}${line.separator}"/><echo file="${basedir}/.git/hooks/pre-push" append="true"message="if ! [ $? -eq 0 ]; then${line.separator}"/><echo file="${basedir}/.git/hooks/pre-push" append="true"message="  printf &quot;${red}Make sure successfully execute command: ${yellow}$command${red}.&quot;${line.separator}"/><echo file="${basedir}/.git/hooks/pre-push" append="true"message="  exit 1${line.separator}fi"/><!-- 设置权限 --><chmod dir="${basedir}/.git/hooks" perm="755" includes="**/*"/></tasks></configuration></execution></executions></plugin>

插件会自动输出 commit-msgpre-push 两个脚本文件


(END)

相关文章:

maven 项目添加 git-hook 脚本,约束提交内容格式

git 提交代码&#xff0c;推送代码&#xff0c;可以通过在 .git/hooks 目录中的 bash 脚本来做一定的验证工作。 本例使用插件 maven-antrun-plugin 自动输出脚本至 .git/hooks 目录中&#xff0c;在 pom.xml 中的使用示例如下&#xff1a; <plugin><groupId>org.…...

18、Flink的SQL 支持的操作和语法

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

泛微OA_lang2sql 任意文件上传漏洞复现

简介 泛微OA E-mobile系统 lang2sql接口存在任意文件上传漏洞&#xff0c;由于后端源码中没有对文件没有校验&#xff0c;导致任意文件上传。攻击者可利用该参数构造恶意数据包进行上传漏洞攻击。 漏洞复现 FOFA语法&#xff1a; title"移动管理平台-企业管理" 页…...

Rust编程基础核心之所有权(上)

1.什么是所有权? Rust 的核心功能&#xff08;之一&#xff09;是 所有权&#xff08;ownership&#xff09;。虽然该功能很容易解释&#xff0c;但它对语言的其他部分有着深刻的影响。 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制&#x…...

优化改进YOLOv5算法之添加DCNv3模块,有效提升目标检测效果

目录 前言 1 DCNv3原理 1.1 DCNv2 1.2 DCNv3 1.3 模型架构 2 YOLOv5算法中加入DCNv3模块...

VSCode 连接不上 debian 的问题

之前一台笔记本上安装了 debian12&#xff0c;当时用 vscode 是可以连接上的&#xff0c;但今天连接突然就失败了&#xff0c;失败信息是这样的&#xff1a; 查看失败信息 因为 debian 是自动获取 ip 地址的&#xff0c;以前能连接上时&#xff0c;ip 地址是 104&#xff0c;然…...

【ElasticSearch系列-06】Es集群架构的搭建以及集群的核心概念

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…...

软考高级系统架构设计师系列案例考点专题六:面向服务架构设计

软考高级系统架构设计师系列案例考点专题六:面向服务架构设计 一、面向服务架构设计内容大纲二、SOA概述和发展三、SOA和微服务的区别四、SOA的参考架构五、SOA主要协议和规范六、SOA设计标准和原则七、SOA设计模式八、SOA构建和实施一、面向服务架构设计内容大纲 SOA概述和发…...

【入门Flink】- 07Flink DataStream API【万字篇】

DataStream API 是 Flink 的核心层 API。一个 Flink 程序&#xff0c;其实就是对DataStream的各种转换。 代码基本上都由以下几部分构成&#xff1a; 执行环境&#xff08;Execution Environment&#xff09; 1&#xff09;创建执行环境StreamExecutionEnvironment StreamExe…...

AI:55-基于深度学习的人流量检测

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...

node版本管理工具nvm

node版本管理工具nvm 要在本地拥有多个 Node.js 版本&#xff0c;并根据不同的环境切换不同的 Node.js 版本&#xff0c;你可以使用工具如 nvm&#xff08;Node Version Manager&#xff09;来管理和切换 Node.js 版本。 以下是关于如何使用这两个工具的简要说明&#xff1a;…...

stable-diffusion-webui安装Wav2Lip

常见错误 1.错误&#xff1a;Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check 修改代码&#xff1a; launch_utils.py 删除三个地方&#xff1a;...

Nacos-2.2.2源码修改集成高斯数据库GaussDB,postresql

一 &#xff0c;下载代码 Release 2.2.2 (Apr 11, 2023) alibaba/nacos GitHub 二&#xff0c; 执行打包 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.skiptrue clean install -U 或 mvn -Prelease-nacos ‘-Dmaven.test.skiptrue’ ‘-Drat.skiptrue’ clean instal…...

Linux 内核中根据文件inode号获取其对应的struct inode

文章目录 前言一、简介二、iget_locked2.1 简介2.2 内核中使用2.3 LKM demo 三、ext4_iget3.1 简介3.2 LKM demo 前言 文件inode号和struct inode结构体请参考&#xff1a; Linux文件路径&#xff0c;目录项&#xff0c;inode号关联 Linux文件系统 struct inode 结构体解析 一…...

Pycharm-community-2021版安装和配置

一、下载Pycharm-community-2021 1.从官网下载pycharm-community Pycharm 版本官网 二、安装PyCharm 1.打开下载完成的安装包&#xff0c;点击Next 2.安装PyCharm到其他位置,点击Next 3.一定把更新PATH变量勾上,可以创建桌面快捷方式&#xff0c;创建关联&#xff0c;最后…...

飞书开发学习笔记(一)-应用创建和测试

飞书开发学习笔记(一)-应用创建和测试 一.前言 现在大企业用的办公IM软件中,飞书是口碑最好的&#xff0c;不得不说&#xff0c;字节在开发产品方面&#xff0c;确实有自己独到的竞争力&#xff0c;比如说抖音、头条、飞书。在办公会议和云文档的体验上&#xff0c;其它的办公…...

【Mybatis小白从0到90%精讲】12:Mybatis删除 delete, 推荐使用主键删除!

文章目录 前言XML映射文件方式推荐使用主键删除注解方式工具类前言 在实际开发中,我们经常需要删除数据库中的数据,MyBatis可以使用XML映射文件或注解来编写删除(delete)语句,下面是两种方法的示例。 XML映射文件方式 Mapper: int delete(int id);Mapper.xml:...

RocketMQ批量发送消息❓

优点&#xff1a; 批量发送消息可以提高rocketmq的生产者性能和吞吐量。 使用场景: 发送大量小型消息时&#xff1b;需要降低消息发送延迟时&#xff1b;需要提高生产者性能时&#xff1b; 注意事项&#xff1a; 消息列表的大小不能超过broker设置的最大消息大小;消息列表…...

一键同步chromedriver版本

ChromeDriver是一个控制Chrome浏览器的驱动程序&#xff0c;它和Selenium一起被广泛用于Web自动化测试。然而&#xff0c;随着Chrome版本的升级&#xff0c;我们需要不断更新ChromeDriver以保持其与Chrome的兼容性。这个过程既费时又繁琐&#xff0c;而且对于非技术人员来说可能…...

Zephyr-7B-β :类GPT的高速推理LLM

Zephyr 是一系列语言模型&#xff0c;经过训练可以充当有用的助手。 Zephyr-7B-β 是该系列中的第二个模型&#xff0c;是 Mistralai/Mistral-7B-v0.1 的微调版本&#xff0c;使用直接偏好优化 (DPO) 在公开可用的合成数据集上进行训练 。 我们发现&#xff0c;删除这些数据集的…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...