如果用户 name/email 不正确,我如何在客户端挂钩中拒绝提交?

How can I deny a commit, in a client-side hook, if the user name/email is incorrect?

有什么方法可以从 Git commit-msg 挂钩访问提交作者信息(作者姓名和电子邮件)?

我需要阻止没有正确电子邮件地址的提交(比如 my.name@company.com)。我可以使用 pre-receive 挂钩或 update 挂钩在服务器端执行此操作,但是有什么方法可以在客户端执行相同的操作吗?

当然可以运行

git log -1 HEAD

post-commit 挂钩并解析输出,但是已经太晚了,因为在那个阶段已经创建了提交。只能作为推送失败的友好警告。

使用 git var 命令怎么样?例如:

$ export EMAIL="arkadiusz@whosebug.com"
$ git var GIT_AUTHOR_IDENT | grep -E -o "<.+>" | sed 's,<,,' | sed 's,>,,'
arkadiusz@whosebug.com
$ unset EMAIL
$ git var GIT_AUTHOR_IDENT | grep -E -o "<.+>" | sed 's,<,,' | sed 's,>,,'
ja@AMDC689

修改~/.gitconfig:

[user]
        email = a@a.a
$ git var GIT_AUTHOR_IDENT | grep -E -o "<.+>" | sed 's,<,,' | sed 's,>,,'
a@a.a