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,每个项目都必须搞一遍,且重新拉项目的时候又得重新重复一遍(可能有全局的设置方式,不过我没去调研,我其实在想,运维那帮人,是不是有手段可以在服务端设置)

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值