如果用户 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
有什么方法可以从 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