git - 如何验证和显示 git 提交消息的错误?

标签 git github

我正在使用一个 node.js 项目,我需要使用各种应用程序(例如 github、sourcetree 等)来 check out git 源代码。是否可以自定义验证 git 提交消息并在提交更改时在所有应用程序中显示错误消息?

我知道 git 中有一个 git hook 'commit-msg' 可用,但我不知道如何使用它。

最佳答案

这是一个示例。

#!/bin/sh

path=$1
echo path is $path

a=$(cat $path)
echo commit message is
echo $a
if [[ "$a" =~ "hello world" ]];then
  echo commit format test passed
  exit 0
else
  echo commit format test failed
  exit 1
fi

将其保存为名为 commit-msg 的文件并使其可执行并将其放入 .git/hooks/中。

此示例检查提交消息是否包含“hello world”的子字符串。如果是,提交将成功。否则,提交将失败。

这是一个python版本

#!/usr/bin/python

import sys

path = sys.argv[1]
print "path is " + path

with open(path) as f:
  lines = f.read()
  print "commit message is"
  print lines
  if "hello world" in lines:
    print "format test passed"
    exit(0)
  else:
    print "format test failed"
    exit(1)

您可以根据您的逻辑改进此 Hook 。您可以检查 .git/hooks/是否有 commit-msg.sample。如果是这样,您可以阅读它作为引用。你可以 cp .git/hooks/commit-msg.smaple .git/hooks/commit-msg 然后编辑它。

此外,如果你想将这个钩子(Hook)部署到每个仓库中,如果你使用的是 Ubuntu,你可以将这个钩子(Hook)复制到/usr/share/git-core/templates/hooks 中。我不知道其他系统中的默认模板路径是什么。您可能需要检查一下。这样做之后,当你 git clone 时,这个钩子(Hook)将被复制到 .git/hook/中。至于已经存在的repos,你可以运行git init来复制hook。

还有一件事,如果你不想让钩子(Hook)运行,你可以在 时添加选项 --no-verify 或者只是 -n git commit,如果它存在,它也会绕过钩子(Hook) pre-commit

关于git - 如何验证和显示 git 提交消息的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37699261/

相关文章:

windows - 如何在 Windows 上安装 go-sql-driver

node.js - npm 安装在多域 git 存储库上失败

github - 查看分配给我的问题?

git - 克隆私有(private)存储库 (Github)

git - 将上游设置为子模块(或如何将 GitHub 分支作为子模块包含在内)

git - 如何在将 vendor 目录 checkin 版本控制时管理 Go 依赖项?

git - 如何让 git 自动检测添加到 Visual Studio 2017 项目中的文件?

git - Azure Git 部署到站点文件夹而不是 wwwroot

javascript - 来自 GitHub 的 Protractor onPrepare() native 示例

ios - Xamarin iOS 应用的版本控制