2

设置:

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

为了问责,部署将一些数据提交到存储库。这都是脚本化并在服务器端运行,无需用户干预。

问题:

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

4

1 回答 1

0

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

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

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

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

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

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

于 2013-04-25T05:52:00.060 回答