java - 如果提交不包含某些问题,如何禁止提交
问题描述
大家早上好,对于github上的Java项目,我必须使用“问题”之类的github功能。为此,所有“提交”必须包含至少一个出口。因此,为了防止我的团队进行死胡同提交,我必须在每次提交之前进行检查。GitHooks 是完成这项工作的完美工具。仅用于实现与 Windows 兼容的脚本。
在 linux 环境中,我知道如何中断提交,但我不知道如何获取能够检查条件的提交内容。
解决方案
一般来说,Git 钩子不是这种情况的好工具,因为用户可以绕过它们git commit --no-verify
(以及各种其他技术)。用户系统上的任何东西都不是有效的控制,因为用户可以修改或删除它。
通常,此行为在服务器端完成。在某些情况下,您可以运行pre-receive
挂钩来检查这些内容,但这在 GitHub 上是不可能的。相反,除了您所做的其他检查外,您还应该在 CI 系统中进行检查。
您可以像这样在 shell 中编写一个脚本来执行此操作,其中两个参数是主分支(通常是master
)和拉取请求的提交 HEAD:
#!/bin/sh -e
git rev-list "$1".."$2" | xargs -L1 sh -c 'git log -1 --format=%b "$@" | grep -E "#[0-9]+"'
这将检查#[0-9]+
提交消息中的模式,如果不匹配则退出非零。如果您使用 bash 或 sh 调用此类脚本,它也可以在 Windows 上运行,因为 Windows 上的所有 Git 版本都带有一些 shell 实现。
推荐阅读
- swiftui - 从 SwiftUI 中的数组更新 List 中带有 Slider 值的文本
- javascript - 如何将 uids 添加为子项?(火力基地 rtdb)
- javascript - 尝试在 Django 中学习 javascript 集成
- flutter - 无法通过命令提示符创建新的 Flutter 项目
- javascript - FB api graphql : 计算在 facebook 中与好友的消息数量
- soot - 什么是局部变量的 DU-UD Web?
- r - 向量内的向量并相互比较.R
- java - 在 Netbeans 8.2 RC 中为我的 Web 项目运行 JUnit 测试时出错说:需要在环境或系统属性中指定类名
- python-module - 运行python模块的Wifi互联网问题
- r - 将掩码变量(在“...”中)传递给 group_by() 时有条件地覆盖默认参数