git提交消息中的Jira问题编号
在我们公司,我们正在从svn迁移到git。 对于问题跟踪,我们使用来自Atlassian的JIRA 现在,我们希望强制每个提交消息都包含一个问题编号(就像我们对svn所做的那样) 我们找到了commit-msg钩子,如果提交不包含问题编号,我们将使用它拒绝提交 JIRA使用Fisheye扫描git回购协议。如果提交消息包含问题编号,则更改将显示在该问题下 问题是在克隆git存储库时没有复制钩子。因此,提交消息中的问题编号不强制执行。这意味着,当一个新的提交被推到上游时,Jira可能不会列出某个问题下的更改git提交消息中的Jira问题编号,git,hook,push,jira,issue-tracking,Git,Hook,Push,Jira,Issue Tracking,在我们公司,我们正在从svn迁移到git。 对于问题跟踪,我们使用来自Atlassian的JIRA 现在,我们希望强制每个提交消息都包含一个问题编号(就像我们对svn所做的那样) 我们找到了commit-msg钩子,如果提交不包含问题编号,我们将使用它拒绝提交 JIRA使用Fisheye扫描git回购协议。如果提交消息包含问题编号,则更改将显示在该问题下 问题是在克隆git存储库时没有复制钩子。因此,提交消息中的问题编号不强制执行。这意味着,当一个新的提交被推到上游时,Jira可能不会列出某个问
问题是,;我们是否以错误的方式使用Git,是否有任何方法可以在提交消息中强制执行问题编号?或者是否有人仅仅拥有一个脚本/钩子(commit-msg钩子除外)来实现这一点 您也可以使用服务器端钩子、预接收钩子或其他东西,但是如果您习惯使用github,这一点并不明显
失败了,我可能会考虑提供一个“安装钩子”构建选项(作为RAKE任务、任务或其他任何东西),虽然这会让我觉得有点“脏”,因为现在我的构建与版本控制系统绑定…
< P>我使用并修改它以满足我的需要,这也适用于您。出于您的需要,只需删除它登录到Jira的部分,以检查提交消息中的Jira发行号regexed是否有效。如果您不喜欢python(git jira hook是用python编写的)并且更喜欢bash,那么您应该能够根据需要调整每个repo的.git/hooks目录中的示例脚本 至于实现对每个人都有效的东西,您希望使用git jira钩子作为上游回购的“更新”钩子。这将阻止包含缺少正确jira问题引用的提交消息的推送。由于在提交时(而不是推送时)更方便地获得关于缺少问题引用的反馈,因此您需要让开发人员安装git jira钩子作为提交消息钩子。稍后我将解释如何在全球范围内实现这一点 以下是我如何解决这个问题的:有一个附加组件:强> 它不仅检查JIRA问题密钥是否“正式”包含在消息中,还检查相应的问题是否与JQL查询匹配。使用它,您有多种可能性,只允许检查特定的问题类型、处于特定状态的问题、当前Scrum sprint中的问题、针对下一个版本的问题等等 作为奖励,它可以与您的原始()和目标版本控制系统()一起工作,使您的工作即使在过渡期间也能得到控制 您可以将钩子脚本安装到受祝福的repo和任何fork。不幸的是,当用Git克隆repo时,钩子脚本并没有被克隆,但我们目前正在研究解决方法 完整文档:
免责声明:这是JIRA的商业和受支持的附加组件,我是开发人员。如果您在.git文件夹中使用默认挂钩,那么您在其中所做的更改将不会被索引,这意味着无法签出或克隆 您可以将提交消息钩子移动到另一个名为“hooks”的文件夹中并提交它,以便它覆盖.git中的默认钩子
如果提交不包含问题编号,我们会将消息框显示为错误,以便用户在不需要问题跟踪器编号的情况下仍然可以继续操作(适用于修补程序/热修复程序)如果您使用的是npm,您可以使用 创建文件:commitlint.config.js
module.exports = {
rules: {
'references-empty': [2, 'never']
},
parserPreset: {
parserOpts: {
issuePrefixes: ['REF-']
}
}};
并在package.json中添加钩子的配置
commit-msg: commitlint -E HUSKY_GIT_PARAMS
克隆存储库时不会复制Git钩子。我们建议使用。这有助于将git钩子发布给克隆repo的每个人
强制git commit包含jira id引用。我已经在回购协议中配置了它。希望这能满足您的要求。基本上,我想要的是,如果提交消息没有问题号,则让源服务器拒绝本地存储库的推送。我确实找到了。但是它想要连接到JIRA服务器,这对于我想要的东西来说并不是必需的。仍然没有一个好的答案。有人有好的服务器端钩子吗?钩子必须在原点执行,也就是我们推到的地方。git jira钩子也有很多叉子,它们有一些有用的特性。如果你觉得git jira hook不够,我会检查一下forks,看看是否有你需要的功能。唯一需要注意的是带有WHATEVERREF-1的消息。我怎样才能修好它?