git - git 提交消息中的 Jira 问题编号

标签 git hook push jira issue-tracking

在我们公司,我们正在从 svn 迁移到 git。 对于问题跟踪,我们使用 Atlassian 的 JIRA。

现在我们要强制每个提交消息都包含一个问题编号(就像我们对 svn 所做的那样)。

我们找到了 commit-msg Hook ,如果它不包含问题编号,我们可以使用它来拒绝提交。

JIRA 使用 Fisheye 扫描 git 仓库。如果提交消息包含问题编号,则更改会显示在该问题下。

问题是在克隆 git 存储库时没有复制钩子(Hook)。因此,提交消息中的问题编号不是强制执行的。这意味着当向上游推送新提交时,Jira 可能不会列出问题下的更改。

问题是;我们是否以错误的方式以某种方式使用 Git,有没有办法真正在提交消息中强制执行问题编号?或者是否有人只是有一个脚本/ Hook (除了 commit-msg Hook )来完成这个?

最佳答案

我用了git-jira-hook并根据我的需要对其进行修改,这也应该适合您。根据您的需要,只需删除它登录到 Jira 的部分,以检查从提交消息中正则化的 jira 问题编号是否有效。如果您不喜欢 python(git-jira-hook 是用 python 编写的)并且更喜欢 bash,您应该能够根据您的需要调整每个 repo 的 .git/hooks 目录中的示例脚本。

至于实现对每个人都适用的东西,您想使用 git-jira-hook 作为上游存储库的“更新” Hook 。这将阻止包含缺少正确 jira 问题引用的提交消息的推送。由于在提交时(而不是在推送时)获得有关缺少问题引用的反馈更方便,因此您需要让您的开发人员安装 git-jira-hook 作为他们的 commit-msg Hook 。稍后我将解释如何在全局范围内完成此操作。

我是这样解决这个问题的:

  1. 私有(private) repo commit-msg Hook : 我修改了 git-jira-hook 以检查我们使用的符号中的 jira 问题引用。然后,我通过电子邮件向所有人发送了带有说明的 Hook ,解释了如何全局安装该 Hook ,如 this SO question 中所述。 .如果您全局安装 Hook ,那么它将在所有 future 的克隆中使用,并且可以使用 git init 轻松应用于已经克隆的存储库。

  2. 上游 repo 更新 Hook : 我使用已经修改过的 git-jira-hook 脚本并将其安装在我们的每个存储库中。我无法在上游存储库(对其进行符号链接(symbolic link))上获得交互式身份验证位,因此我创建了一个权限受限的 Jira 用户,并将他们的身份验证硬编码到脚本中。

关于git - git 提交消息中的 Jira 问题编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365554/

相关文章:

git - 如何在 git 中显示有关单个提交的元数据?

git 推送补丁到远程

git - 递归 Git 推/pull ?

git - 使用 git hash-object 构建 git commit 对象?

c++ - 挂接 Windows API 函数使应用程序崩溃

php - 保存帖子并添加帖子元执行两次

c# - 拦截来自其他程序的鼠标点击

git push 说一切都是最新的,但肯定不是

git rebase 导致 origin/master 和 master 出现分歧

git - autosetuprebase 与 autosetupmerge