我们有一个不错的GIT预提交钩子(Hook),还有一个不错的commit-msg。 pre-commit Hook 执行语法验证,而commit-msg则执行其他一些业务逻辑。一切都很好。

但是,我想将编码标准验证添加到预提交 Hook 中。实际上,它已经被添加了。但是,我不想严格要求我们的开发人员与编码标准匹配,默认情况下,我想验证标准的代码,但是如果他们想通过编码标准验证,我希望让他们通过在提交过程中添加参数来传递。

是否可以捕获/解释在预提交钩子(Hook)级别提交到git期间给出的任何命令行参数,以便跳过预提交钩子(Hook)中的编码标准验证(可选?)。

还是只有通过分析特定子字符串的提交消息,才可能在预提交消息 Hook 中?

请分享您有关如何(以及在​​何处)使用git pre-commit钩子(Hook)(或其他git钩子(Hook))创建命令行控制的条件代码的最佳实践。

最佳答案

一种简单的方法是使用环境变量:

STANDARDS=no git commit

然后在脚本中(例如Bash中的示例,但是您可以使用钩子(Hook)所使用的任何语言来读取env vars):
if [ "$STANDARDS" != "no" ]; then
    ...check for code standards...
fi

Git通常不会将man githooks中列出的信息传递给每个钩子(Hook),因此尝试使用“命令行选项” la git commit --no-standards或类似的方法来执行此操作。

关于git - 从命令行控制的针对GIT的有条件预提交钩子(Hook): Is it possible?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9730937/

10-15 10:26