Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VS代码中将Jira问题编号自动添加到git提交消息_Git_Visual Studio Code_Jira - Fatal编程技术网

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

在VS代码中将Jira问题编号自动添加到git提交消息,git,visual-studio-code,jira,Git,Visual Studio Code,Jira,我们将Jira问题添加到提交消息中,以将更改与Jira问题联系起来。由于问题编号是手动添加的,因此可能是人为错误。由于我们在git分支中总是有这个数字,提交消息可以有这个分支名称的默认值吗?可以通过vs代码扩展或git模板来完成吗 我建议您使用commit msg本地钩子和pre-receive服务器钩子。Git钩子是验证和修改存储库写入操作的脚本-您可以在官方文档中了解它们: Localcommit msghook可以从分支中提取票证名称,并将其附加到消息中(如果在分支中未找到票证名称)。如果

我们将Jira问题添加到提交消息中,以将更改与Jira问题联系起来。由于问题编号是手动添加的,因此可能是人为错误。由于我们在git分支中总是有这个数字,提交消息可以有这个分支名称的默认值吗?可以通过vs代码扩展或git模板来完成吗


我建议您使用
commit msg
本地钩子和
pre-receive
服务器钩子。Git钩子是验证和修改存储库写入操作的脚本-您可以在官方文档中了解它们:

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


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

事实上,我已经找到了
Flow/Jira Commit Prefix
扩展,它几乎满足了我的需要。可以根据需要调整源代码。

我创建了一个名为
prepare commit msg
的文件,该文件是我在
.git/hooks
文件夹中复制的

#/bin/bash
#获取当前分支名称
当前分支=`git rev parse--abbrev ref HEAD`
#以“feature/ABCD-123-my-feature”等模式搜索Jira ID
id=$(echo$当前分支机构| sed-nE的[a-z]+/([a-z]+-[0-9]+)-.+,\1,p')
#仅当在当前分支中找到ID时才预结束
如果[!-z$id]];然后
#$1是包含提交消息的文件的名称
#在“ABCD-123”前面加上前缀:
sed-i.bak-E“1s/^/${id}:/”$1
fi
要点如下:


注意:您会发现许多解决方案都使用了
sed-nr
,不幸的是,这在Sierra之后不再有效。使用
-E

这并不是我想要的。我试图创建prepare-commit-msg钩子,但它没有更新vscodeeditor@DmitrijKultasev我仍然无法获取VSCode来运行prepare-commit-msg脚本。你在这段时间内修好了吗?有消息吗?这确实奏效了!我找到了类似的教程: