如何确定谁推送到存储库?
即有人这样做git push origin master
,并且在origin
repo 的 post-receive 挂钩中,我需要使用 Somebody 的名称或电子邮件。
如果您使用 SSH 协议将更改推送到服务器,并且每个用户在服务器上都有自己的帐户,那么您的脚本应该以执行推送的用户身份运行。因此,您应该能够使用whoami
或id -un
获取进行推送的人的用户名。
如果您不使用此设置,那么跟踪谁在推送的最佳方法可能是使用Gitolite,这是一个强大的 Git 身份验证和授权系统。在 Gitolite 中,您可以使用update.secondary
和post-update.secondary
hooks,它将GL_USER
环境变量设置为当前 Gitolite 用户。
你不能用 Git 来判断。如果你使用 SSH 推送,那么你可以使用 SSH 来获取用户名,如果你使用用户管理前端,例如 gitolite,你可以使用它来获取用户名,如果你使用带有身份验证的 HTTP,你可以使用你的网络服务器获取用户名,但 Git 网络协议不传输任何用户名。