Java 如果提交不包含某些问题,如何禁止提交

Java 如果提交不包含某些问题,如何禁止提交,java,github,commit,githooks,Java,Github,Commit,Githooks,各位早上好,, 对于github上的Java项目,我必须使用github函数,如“issues”。为此,所有“提交”必须至少包含一个出口。为了防止我的团队做出死胡同,我必须在每次提交前检查。 GitHooks是这项工作的完美工具。仅用于实现与Windows兼容的脚本 在linux环境中,我知道如何中断提交,但我不知道如何获取能够检查条件的提交内容。一般来说,对于这种情况,Git钩子不是一个好工具,因为用户可以使用Git commit--no verify(以及各种其他技术)绕过它们。用户系统上的

各位早上好,, 对于github上的Java项目,我必须使用github函数,如“issues”。为此,所有“提交”必须至少包含一个出口。为了防止我的团队做出死胡同,我必须在每次提交前检查。 GitHooks是这项工作的完美工具。仅用于实现与Windows兼容的脚本


在linux环境中,我知道如何中断提交,但我不知道如何获取能够检查条件的提交内容。

一般来说,对于这种情况,Git钩子不是一个好工具,因为用户可以使用
Git commit--no verify
(以及各种其他技术)绕过它们。用户系统上的任何内容都不是有效的控件,因为用户可以修改或删除它

通常,此行为在服务器端完成。在某些情况下,您可以运行一个
pre-receive
hook来检查这些内容,但这在GitHub上是不可能的。相反,除了进行其他检查外,还应在CI系统中检查此项

您可以像这样在shell中编写一个脚本,其中两个参数是主分支(通常是
master
)和pull请求的提交头:

#!/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实现