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

时间:2012-07-01 08:45:47

标签: git hook

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

那么,我怎么得到它?

2 个答案:

答案 0 :(得分:7)

你没有。
upstream repo没有对谁提供提交做出任何假设:它可以通过电子邮件,在USB密钥上复制的差异补丁,以及其他 various transfer protocol

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

  • 这与Git
  • 无关
  • 这假设他们的日志级别已适当设置。
  • 即使是Gitolitegitolite-admin回购邮件中注册的name of the public ssh key也可以是您想要的任何内容,与真实姓名无关。

正如Linus提到的那样(在“Why do some open source projects do not accept pull requests, but emailing patch files only?”中):

  

由于github身份是随机的,我希望拉取请求为 a signed tag ,以便我可以验证相关人员的身份。

因此,如果您想要推送一些提交,以保证所有仓库的完整性,您可以在正在推送的HEAD上制作并签署一个标签,以便上游回购把你视为,不完全是“推动者”,而是确认推动了什么的那个

答案 1 :(得分:5)

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

更新:一般来说,与提交的作者和提交者相比,这些信息并不十分有趣 - 例如,GitHub显示特定用户推动......