mei*_*juh 28 git hook push jira issue-tracking
在我们公司,我们正在从svn转向git.对于问题跟踪,我们使用Atlassian的JIRA.
现在我们要强制执行每个提交消息都包含一个问题编号(就像我们使用svn一样).
我们找到了commit-msg钩子,如果它不包含问题编号,我们用它来拒绝提交.
JIRA使用Fisheye扫描git repo.如果提交消息包含问题编号,则更改将显示在该问题下.
问题是克隆git存储库时不会复制钩子.因此,不会强制执行提交消息中的问题编号.这意味着当向上推送新提交时,Jira可能不会列出问题下的更改.
问题是; 我们以某种方式以错误的方式使用Git并且有没有办法在提交消息中真正强制执行问题编号?或者是否有任何人只有一个脚本/钩子(除了commit-msg钩子)来完成这个?
Fre*_*ots 15
我使用了git-jira-hook并根据我的需要对其进行了修改,这也适用于你.根据您的需要,只需删除它登录Jira的部分,检查提交消息中的jira发布号是否有效.如果您不喜欢python(git-jira-hook是用python编写的)并且更喜欢bash,那么您应该能够根据需要调整每个repo的.git/hooks目录中的示例脚本.
至于实现适用于每个人的东西,你想使用git-jira-hook作为上游回购的"更新"钩子.这将阻止包含缺少正确jira问题引用的提交消息的推送.由于在提交时(而不是在推送时)获取有关缺少问题引用的反馈更方便,因此您需要让开发人员安装git-jira-hook作为其commit-msg挂钩.我稍后会解释如何在全球范围内完成这项工作.
以下是我解决此问题的方法:
私有repo commit-msg hook:我修改了git-jira-hook来检查我们使用的符号中的jira问题引用.然后,我通过电子邮件发送了钩子,向每个人解释如何全局安装钩子,如本SO问题所述.如果你全局安装钩子,它将在所有未来的克隆中使用,并且可以使用git init轻松应用于已经克隆的repos.
上游repo update hook:我使用了已修改的git-jira-hook脚本并将其安装在我们的每个repos中.我无法获得上游repo上的交互式身份验证位(符号链接),因此我创建了一个受限制的权限Jira用户并将其身份验证硬编码到脚本中.
小智 6
如果您正在使用npm,则可以将https://github.com/typicode/husky与https://github.com/marionebl/commitlint一起使用
创建文件:commitlint.config.js
module.exports = {
rules: {
'references-empty': [2, 'never']
},
parserPreset: {
parserOpts: {
issuePrefixes: ['REF-']
}
}};
Run Code Online (Sandbox Code Playgroud)
并在package.json中为钩子添加配置
commit-msg:commitlint -E HUSKY_GIT_PARAMS
你也可以有服务器端钩子、预接收钩子或其他东西,但是如果你习惯了 github,这并不明显。
如果做不到这一点,我可能会考虑提供一个“install-hooks”构建选项(作为 rake 任务、make 任务或其他),尽管这会让我感觉有点“肮脏”,因为现在我的构建与版本控制系统相关联...
| 归档时间: |
|
| 查看次数: |
31211 次 |
| 最近记录: |