在VS Code中自动将Jira问题编号添加至git提交信息

6
我们在提交信息中添加 Jira Issue # 来将更改与 Jira Issue 相关联。由于问题编号是手动添加的,因此容易出现人为错误。由于我们始终在 git branch 中拥有此编号,因此提交信息是否可以具有此分支名称的默认值?这可以通过 vs code 扩展或 git 模板 实现吗?

enter image description here

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
这真的起作用了! 我找到了类似的教程:https://medium.com/bytelimes/automate-issue-numbers-in-git-commit-messages-2790ae6fe071 - Pini Cheyni

1
实际上,我找到了一个名为Flow / Jira Commit Prefix的扩展程序,它几乎满足了我的需求。可以根据需要调整源代码。

0

我建议您使用commit-msg本地钩子和pre-receive服务器钩子来实现您的目的。 Git钩子是验证和修改存储库写入操作的脚本 - 您可以在官方文档中了解它们:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

本地commit-msg钩子可以从分支中提取票据名称并将其附加到消息中,如果在那里没有找到,则可以甚至取消提交过程,如果分支名称不符合命名要求。

这种方法的主要缺点是任何开发人员都应该手动放置本地钩子,由于安全考虑,因此可能会忘记或忽略这一点。因此,您还需要一个服务器端pre-receive钩子,以拒绝推送的分支,无论其中一个新提交是否包含无效消息。


这不完全是我想要的。我试图创建prepare-commit-msg钩子,但它没有更新vscode编辑器。 - Dmitrij Kultasev
@DmitrijKultasev 我仍然无法让VSCode运行prepare-commit-msg脚本。你在此期间是否成功解决了?有任何消息吗? - Quamis

0

Git前缀可以完成这项工作。

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

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接