6

如何确定谁推送到存储库?

即有人这样做git push origin master,并且在originrepo 的 post-receive 挂钩中,我需要使用 Somebody 的名称或电子邮件。

4

3 回答 3

10

如果您使用 SSH 协议将更改推送到服务器,并且每个用户在服务器上都有自己的帐户,那么您的脚本应该以执行推送的用户身份运行。因此,您应该能够使用whoamiid -un获取进行推送的人的用户名。

如果您不使用此设置,那么跟踪谁在推送的最佳方法可能是使用Gitolite,这是一个强大的 Git 身份验证和授权系统。在 Gitolite 中,您可以使用update.secondarypost-update.secondaryhooks,它将GL_USER环境变量设置为当前 Gitolite 用户。

于 2010-09-21T16:02:09.870 回答
0

我不确定 Git 是否旨在管理这种访问控制。

这就是为什么你有像gitosisgitolite这样的基于 ssh 的包装器,它们将提供你所追求的足够的身份验证级别。

于 2010-09-21T15:53:40.693 回答
0

你不能用 Git 来判断。如果你使用 SSH 推送,那么你可以使用 SSH 来获取用户名,如果你使用用户管理前端,例如 gitolite,你可以使用来获取用户名,如果你使用带有身份验证的 HTTP,你可以使用你的网络服务器获取用户名,但 Git 网络协议不传输任何用户名。

于 2010-09-21T16:53:04.620 回答