git 提交自动带上storyid

       公司里的运维团队的产品经理,那老六提出说要在每个提交带上的jira storyid或者bugid,不用他自己弄不顾他人麻烦,真想问候他的xx。不过既然已经成为定局,还是想想有没有其他办法。经一番调研,网上有比较零碎的信息,不系统,所以这里总结一下,分享给各位道友。由于本人是前端,所以方案更多地是站在前端的角度去写。

        这里运维只校验提交信息的格式为:storyid或者bugid:提交信息,他们并没有限定bug一定要用bugid, 所以,我们通用之提交storyid,不用bugid, 看完后续方案,你就会明白,我为什么这么限定。

方案一、采用编辑器插件

我开发的编辑器是vscode,所以这里采用的是vscode 插件,这里经过测试,推荐的是Jira Commit Message 插件。我就不一步一步写怎么安装插件了,不会的自己百度一下。以下是这个插件文档翻译和用法:

简介:

这个插件自动从分支名中提取jira id , 附加到提交信息的前缀。

功能:

  • 自动添加前缀:基于分支名,自动在提交信息中添加前缀
  • 自定义模式: 允许自定义配置issue code 提取模式和提交信息格式.
  • 过时前缀处理: 分支改变时,会自动检测并更新过时的前缀.

配置

通过 VSCode settings.json 进行配置:

  • commitMessagePrefixPattern: 匹配分支名中 issue 前缀的正则,. 默认是 (ML-\d+)-.*.
  • commitMessageFormat: 提交信息的格式. 使用 ${prefix} 作为前缀 , ${message} 作为原始提交信息,默认是 "[${prefix}] ${message}".
  • gitHeadWatchInterval: 检测 .git/HEAD file 改变的时间间隔. 默认是 1000.

使用:

1、从上面的文档可以看出,这个插件是通过提取我们分支上的storyid,并自动给我们附带到提交信息上的。所以我们在分支命名的时候,带上storyid,如:feature/storyid/v1.0,这样就能提取到了。这也是我们开头写得为什么不用bugid的原因,分支名只有一个,不可能用bugid。(还要那老六也没要求bug一定要用bugid)。

2、通过上面配置中的commitMessagePrefixPattern配置匹配出storyid的正则,通过commitMessageFormat配置提交信息的格式。

3、写提交信息,并点下面按钮,即可自动附带上storyid

真感谢写出这插件的作者。

优点:

1、前端项目安装一次都能用

缺点:

1、跟浏览器相关,后端同学可能用不了

2、可能有的vscode使用这个插件时会报错

方案二、采用git hook 方式

       这个方案其实思路跟方案一是一样的,都是在分支名里面提取storyid,所以我们分支名保持相同的形式。只不过提取和附带信息的过程处理放在prepare-commit-msg hook中。

       在项目下找到 .git/hooks ,看看里面有没有prepare-commit-msg,没有的话新建,并拷贝下面代码,有的话将下面代码复制到合适的地方(不要影响原本hook的功能)

#!/bin/bash

# Get the current branch name
current_branch=`git rev-parse --abbrev-ref HEAD`

# Search Jira ID in a pattern such a "feature/ABCD-123-my-feature"
id=$(echo $current_branch | sed -nE 's,[a-z]+/([A-Z]+-[0-9]+)-.+,\1,p')

# Only prepend if an ID was found in the current branch
if [[ ! -z $id ]]; then
 # $1 is the name of the file containing the commit message
 # Prepend "ABCD-123: "
 sed -i.bak -E "1s/^/${id}: /" $1
fi

写点信息,提交,你会发现,storyid自动附带上了,都不用像方案一一样,去点按钮。

优点:

1、前后端通用,没有编辑器限制

缺点:

1、写在项目下git hook,每个项目都必须搞一遍,且重新拉项目的时候又得重新重复一遍(可能有全局的设置方式,不过我没去调研,我其实在想,运维那帮人,是不是有手段可以在服务端设置)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/873380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx 负载均衡+高可用 集群部署(Keepalived+LVS DR模式)

一、LVS负载均衡简介 1.1 LVS基本介绍 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导开发的开源负载均衡项目,目前LVS已经被集成在Linux内核中。该项目在Linux内核中实现了基于IP地址的请求数据负载均衡调度方…

以太网交换机工作原理学习笔记

在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。 1、以太网协议…

CTFHub技能树-Git泄漏-Stash

目录 一、前提知识 1.什么是git stash 2.git文件目录结构 3.git中对象指向 二、解题过程 方法一:使用GitHack 方法二:使用Git_Extract工具,这个是自动解析不用git stash等操作,直接得到flag 当前大量开发人员使用git进行版本…

SQL进阶技巧:截止当前批次前的批次量与订单量 | 移动窗口问题

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 表A有如下字段,user id(用户ID),batch id(批次ID),order id(订单ID),create time(创建时间),同一个用户ID下有多个批次,同一个批次下有多个订单ID,相同批次ID的创建时间是相同的,创建时间精确到了秒。 统计,截…

1-10 图像增强对比度 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 enhanced_image cv2.convertScaleAbs(image, alpha1.5, beta0) 三、运行现象 四、完整工程贴出 一、提前准备 1、树莓派4B 及 64位系统 2、提前安装opencv库 以及 numpy库 3、保存一张图片 二、代码详解 import cv2 # 增强图像的对比度 …

【音视频】播放音视频时发生了什么? 视频的编解码 H264是什么? MP4是什么?

目录 ✨播放一个视频的流程✨为什么要编码(压缩)视频数据?✨如何编码(压缩)数据🎄简单的例子🎄音视频编码方式🎄视频编码格式H264编码是什么?发展历程?H.264基…

【Python游戏开发】拼图小游戏demo

使用mu编辑器 pgzero编写拼图小游戏 import randomSIZE 96 # 设置每张图块的大小 WIDTH SIZE * 3 # 根据土块大小设置窗口 HEIGHT SIZE * 3 pics [] # 存放图块 finished False # 游戏结束标识# 将前八张图块存放在pics列表中 for i in range…

009.Python爬虫系列_urllib模块案例

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数…

传统CV算法——基于Opencv的多目标追踪算法

基于 OpenCV 的跟踪算法有多种,每种算法都有其特定的应用场景和优缺点。以下是一些常见的基于 OpenCV 的目标跟踪算法: 1. BOOSTING 跟踪器 描述:基于 AdaBoost 算法的跟踪器。它是一种早期的跟踪算法,使用的是基于弱分类器的强…

php转职golang第二期

以下是一份简单的 Go 基本语法笔记: 变量与常量: • var 声明变量。• const 声明常量。数据类型: • 整型、浮点型、布尔型、字符串型等。流程控制: • if-else 语句。• for 循环。函数: • 定义和调用函数。数…

Linux-【组管理、权限管理、定时任务调度】

目录 前言 Linux组基本介绍 文件/目录 所有者 查看文件 所有者 修改文件所有者 文件/目录 所在组 修改文件/目录 所在组 其它组 改变用户所在组 权限的基本介绍 rwx权限 rwx作用到文件 rwx作用到目录 修改权限 第一种方式:、-、变更权限 第二种方式…

系统编程--线程

这里写目录标题 线程概念什么是线程简介图解 内核原理图解 线程共享资源与非共享资源共享资源非共享资源 线程优缺点 线程控制原语pthread_self、pthread_create简介代码总结 循环创建多个子线程错误代码 线程间全局变量共享pthread_exit简介代码 一级目录二级目录二级目录二级…

可持久化Trie详解,最大异或和,k大异或和

零、碎碎念 打比赛没遇上可持久化Trie,做个CMU 15-445的project0,上来就碰上了…… 关于Trie详见:[Trie树/字典树的原理及实现C/C]_trie字典树原理-CSDN博客 一、可持久化Trie 1.1 基本思想 可持久化Trie和可持久化线段树类似&#xff0c…

白小白为波司登新品创作歌曲《登峰之路》,穿越风雨守护前行者

随着天气渐凉,波司登品牌推出全新新品——轻薄羽绒叠变系列,作为波司登品牌的新品推荐官,歌手白小白为波司登创作并演唱《轻薄羽绒叠变》系列主题曲《登峰之路》。歌曲中,白小白以激昂澎湃,明快有力的旋律以及深情又充…

[数据集][目标检测]西红柿缺陷检测数据集VOC+YOLO格式17318张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):17318 标注数量(xml文件个数):17318 标注数量(txt文件个数):17318 标…

【第0006页 · 数组】寻找重复数

【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里: 第0006页 寻找重复数 今天想讨论的一道题在 LeetCode 上评论也是颇为“不错”。有一说一,是道好题,不过我们还是得先理解了它才…

【Unity小技巧】URP管线遮挡高亮效果

前言 在URP渲染管线环境下实现物体遮挡高亮显示效果,效果如下:Unity URP遮挡高亮 实现步骤 创建层级,为需要显示高亮效果的物体添加层级,比如Player 创建一个材质球,也就是高亮效果显示的材质球找到Universal Render…

react项目搭建、基础知识

前言 教学内容来源于黑马 黑马程序员前端React18入门到实战视频教程,从reacthooks核心基础到企业级项目开发实战 项目搭建 创建项目 pnpm create vite选择框架 选择语言和构建 安装依赖并运行 pnpm install pnpm run dev运行成功 基础知识 文件 main…

极盾故事|某金融租赁机构应用数据保护新策略:“动态脱敏”“二次授权”

数据的流通使用是创新的动力,但安全和合规是不可逾越的底线。企业如何在这三者之间找到平衡点? 极盾科技,助力某金融租赁机构,基于极盾觅踪构建应用数据动态脱敏系统,实现10+核心应用系统的统一管理&#x…

磁电偶极子天线学习1 一种60GHz 宽带圆极化口径耦合磁电偶极子天线阵列

摘要: 一种新型的圆极化口径耦合天线被提出。这种圆极化磁电偶极子天线由刻蚀在短路基片集成波导的一部分的宽臂上,并且很容易被集成基片。在工作频段内实现了宽于28.8%的阻抗带宽和宽带3-dB的25.9%的轴比和的增益。此外,因为圆极化辐射由两个…