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

问题描述 投票:2回答:1

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

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

java github commit githooks
1个回答
0
投票

通常,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实现。

© www.soinside.com 2019 - 2024. All rights reserved.