Git提交不使用转发的ssh代理?

时间:2013-04-24 21:15:00

标签: git github ssh git-commit

设定:

我们有几个用户可以访问Github仓库。 这些用户都具有各种服务器的部署权限。 服务器无法访问Github存储库 - 它们使用ssh-agent转发来获取用户的凭据。 在将数据从Github传输到服务器时,一切都按预期工作。

对于问责制,部署会向repo提交一些数据。这都是脚本化的,并且在服务器端运行,无需用户干预。

问题:

Git提交将提交者名称和电子邮件设置为服务器上设置的任何内容(如果未明确设置,则默认为服务器用户名)。有没有办法强制Git(作为发送者)或Github(作为接收者)将提交与转发的用户凭证相关联?

1 个答案:

答案 0 :(得分:0)

您可以尝试在服务器上设置一个钩子,在接收时触发(例如,这个GitHubHook: a GitHub Post-Receive Deployment Hook),这将:

  • 修改本地.git/config文件
  • 在所述配置文件中添加user.name和user.email

这将假定部署提交是在下一次从GitHub推送到服务器之前完成的,否则,将使用错误的凭证。

如果前一点是一个问题,那么您可以通过以下方式改进:

  • 按照部署的顺序将这些凭据存储在其他地方
  • 并确保使用git commit --author='AUserName <some@email.com>完成部署提交,并根据记录的顺序从单独的文件中提取名称和电子邮件。

在最后一种情况下,无需修改本地配置:使用正确的参数构建git commit命令,而不是依赖本地配置文件内容。