如何在收到后的钩子中获取推送者的信息?

Sai*_*ito 6 git hook

作者,提交者和推动者在Git中可以是不同的人,但是git没有将推送者的信息存储在日志中.

那么,我怎么得到它?

Von*_*onC 7

你没有.
上游回购不做出关于谁提供犯任何的假设:它可以通过电子邮件,打上补丁复制到USB密钥以及其他各种传输协议.

其中一些协议(ssh,https)可能在其日志中包含您要查找的信息,但是:

  • 这与Git无关
  • 这假设他们的日志级别是适当设置的.
  • 即使对于Gitolite,在回购中注册的公共ssh密钥名称gitolite-admin也可以是您想要的任何名称,与真实姓名无关.

正如Linus所提到的那样(" 为什么有些开源项目不接受拉取请求,只是通过电子邮件发送补丁文件? "):

由于github身份是随机的,我希望pull请求是一个签名标签,以便我可以验证相关人员的身份.

因此,如果你想要推销一些提交,保证所有仓库的完整性,你可以HEAD在推送的内容上制作并签署一个标签,以便上游仓库将你视为,不完全是"推动者",但是那个证实被推动的东西


Mar*_*air 5

如果通过SSH进行推送,您可以使用USER环境变量.(当然,这也适用于本地推送.)当然,这取决于用于SSH登录的用户是否与系统的不同用户不同 - 例如,gitolite不是这种情况.(但是,gitolite将定义GL_USER环境变量以识别推送器.)对于HTTP,您可以尝试REMOTE_USER环境变量.

更新:一般来说,与提交的作者和提交者相比,这些信息并不是非常有趣 - 例如,GitHub显示特别推送的用户总是让我感到惊讶......