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

news/2024/7/23 21:30:42 标签: maven, git

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)


http://www.niftyadmin.cn/n/5157347.html

相关文章

比SAM小60倍的分割一切模型:MobileSAM

1 MobileSAM SAM就是一类处理图像分割任务的通用模型。与以往只能处理某种特定类型图片的图像分割模型不同&#xff0c;SAM可以处理所有类型的图像。 在SAM出现前&#xff0c;基本上所有的图像分割模型都是专有模型。比如&#xff0c;在医学领域&#xff0c;有专门分割核磁图…

AJAX-解决回调函数地狱问题

一、同步代码和异步代码 1.同步代码 浏览器是按照我们书写代码的顺序一行一行地执行程序的。浏览器会等待代码的解析和工作&#xff0c;在上一行完成之后才会执行下一行。这也使得它成为一个同步程序。 总结来说&#xff1a;逐行执行&#xff0c;需原地等待结果后&#xff0…

关于 HTML 的一切:初学者指南

HTML 代表超文本标记语言&#xff0c;是用于创建网页和 Web 应用程序的标准语言。 本指南将全面介绍 HTML&#xff0c;涵盖从基本语法和语义到更高级功能的所有内容。 我的目标是用简单的术语解释 HTML&#xff0c;以便即使没有编码经验的人也能学习如何使用 HTML 构建网页。…

简单CMake入门

CMake可以生成不同平台下的Makefile&#xff0c;有了CMake不用再写复杂的Makefile 视频教程&#xff1a;CMake 6分钟入门&#xff0c;不用再写复杂的Makefile 先前知识 Makefile简单入门 Cmake特性 CMake是一个用于管理C/C项目的跨平台构建工具。 跨平台&#xff1a;CMake是…

2023年显著性检测论文及代码汇总(4)

ACM MM Partitioned Saliency Ranking with Dense Pyramid Transformers code Abstacrt&#xff1a;显著性排序&#xff0c;其重点是评估实例级别的显著性程度。本文提出分区排序范式&#xff0c;该范式将无序的显著性实例分区&#xff0c;然后根据分区之间的相关性对其进行排…

【独立开发】跨境电商商城源码!源码全开源,无加密,软著加持,交付源码!

大家好&#xff0c;今天要给大家带来一个重磅好消息! 一直在寻找优质跨境电商源码?那么这个你一定不能错过! 1、独立开发&#xff1a;这款源码是由我们团队独立开发&#xff0c;从需求分析、设计、编码到测试&#xff0c;全部由我们亲自完成。这里没有中间商&#xff0c;也没有…

MATLAB算法实战应用案例精讲-【人工智能】ROS机器人(补充篇)

目录 前言 ROS 机器人导航调参 1 速度和加速度 2 全局路径规划 3 局部路径规划

动态壁纸软件Live Wallpaper HD mac中文版功能特色

Live Wallpaper HD mac提供了一系列美丽的主题场景&#xff0c;将为您的桌面增添活力。从城市景观、日落到遥远的星系&#xff0c;每个屏幕都有特别的触感&#xff0c;可以定制您的天气小部件和时钟样式&#xff0c;并使用您喜爱的图片创建您自己的个性化壁纸。 Living Wallpap…