在 VS Code 中自动将 Jira 问题号添加到 git 提交消息

问题描述 投票:0回答:4

我们将 Jira Issue # 添加到提交消息中,以将更改与 Jira Issue 链接起来。由于问题编号是手动添加的,很容易出现人为错误。由于我们总是在 Git 分支_中保存这个编号,所以提交消息可以有这个分支名称的默认值吗?可以使用 vs code 扩展或 git templates 来完成吗?

git visual-studio-code jira
4个回答
6
投票

我创建了这个名为

prepare-commit-msg
的文件,并将其复制到
.git/hooks
文件夹中

#!/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

要点如下:https://gist.github.com/raduchiriac/36b6269bebb75cfac7371acb1459fdcc

注意:您会发现许多使用

sed -nr
的解决方案,不幸的是,这在 Sierra 之后不再起作用。使用
-E


1
投票

实际上我已经找到了

Flow / Jira Commit Prefix
扩展,它几乎可以满足我的需要。可根据需要调整来源。


0
投票

我建议您使用

commit-msg
本地挂钩和
pre-receive
服务器挂钩来实现您的目的。 Git hooks 是验证和修改存储库写入操作的脚本 - 您可能会在官方文档中熟悉它们:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

Local

commit-msg
钩子可以从分支中提取票证名称并将其附加到消息中(如果在那里尚未找到)。如果分支名称不满足命名要求,它甚至可以取消提交过程。

这种方法的主要缺点是,出于安全考虑,任何开发人员都应该手动放置本地钩子,因此人们也可能会忘记或忽略这一点。因此,您还需要一个服务器端 pre-receive

 钩子来拒绝推送的分支,无论新提交之一是否包含无效消息。


0
投票

Git Prefix 可以完成这项工作。

Flow Jira 提交前缀设置示例:([A-Z]{3,6}-[0-9]{2,6})(.*)

© www.soinside.com 2019 - 2024. All rights reserved.