例如,一个人创建一个分支(或轻量级标签)并将分支推送到服务器。从本地.git目录看,有些文件是人为修改的。那个人也是推动者。服务器知道是谁做的,因为它需要检查权限。服务器上的 git 是否会通过谁执行该操作来获取此信息?
如果我能做到:
git log .git/refs/tags/tag
我可以找出是谁创建了该标签。
如果有办法做到这一点,人们可以回答以下问题:
- 谁创建/删除了这个分支
- 谁创建/删除了这个标签
- 等等
还是有另一种方法来找出 git repo 元数据更改的作者?
例如,一个人创建一个分支(或轻量级标签)并将分支推送到服务器。从本地.git目录看,有些文件是人为修改的。那个人也是推动者。服务器知道是谁做的,因为它需要检查权限。服务器上的 git 是否会通过谁执行该操作来获取此信息?
如果我能做到:
git log .git/refs/tags/tag
我可以找出是谁创建了该标签。
如果有办法做到这一点,人们可以回答以下问题:
还是有另一种方法来找出 git repo 元数据更改的作者?
您可以在您的服务器存储库中编写一个post-receive挂钩,该挂钩将记录更新了哪些 refs,以及更新的方式和执行者。
至于谁——这有点棘手,因为它完全取决于哪个软件实际进行了身份验证和授权(最后称为服务器端 Git 进程)。例如,使用gitolite钩子,实际经过身份验证的用户名似乎在GL_USER环境变量中可用。HTTP服务器应导出REMOTE_USER环境变量等。