0

例如,一个人创建一个分支(或轻量级标签)并将分支推送到服务器。从本地.git目录看,有些文件是人为修改的。那个人也是推动者。服务器知道是谁做的,因为它需要检查权限。服务器上的 git 是否会通过谁执行该操作来获取此信息?

如果我能做到:

git log .git/refs/tags/tag

我可以找出是谁创建了该标签。

如果有办法做到这一点,人们可以回答以下问题:

  • 谁创建/删除了这个分支
  • 谁创建/删除了这个标签
  • 等等

还是有另一种方法来找出 git repo 元数据更改的作者?

4

1 回答 1

0

您可以在您的服务器存储库中编写一个post-receive挂钩,该挂钩将记录更新了哪些 refs,以及更新的方式和执行者。

至于——这有点棘手,因为它完全取决于哪个软件实际进行了身份验证和授权(最后称为服务器端 Git 进程)。例如,使用gitolite钩子,实际经过身份验证的用户名似乎在GL_USER环境变量中可用。HTTP服务器应导出REMOTE_USER环境变量等。

于 2013-09-05T13:31:32.700 回答