我可以使用钩子获取预期的作者/提交者姓名吗?

我可以使用钩子获取预期的作者/提交者姓名吗?

因此,我有一个有点不寻常的 git 存储库,因为多个人使用 处理同一个存储库sudo。(长远目标是摆脱这种情况,但目前,我们只是在改进实践方面迈出了一小步。)

当然,这使得识别谁做出了每次提交变得困难,但我已经找到了使用环境变量(GIT_AUTHOR_NAME 等)的合理解决方案。

为了“强迫”我的同事使用这个,我想在提交之前运行的一个钩子中添加一些自动验证:

  • 预先承诺
  • 准备提交信息
  • 提交信息

但是,我似乎无法在这些钩子中找到任何方法来查找这些信息。我当然可以尝试重新发明轮子并寻找环境变量等,但我非常希望不这样做。

那么,有人知道是否有办法向 git 询问它打算用于暂存提交的作者/提交者姓名和电子邮件吗?或者这些信息是否仅在预提交挂钩之后添加到提交中?

答案1

GIT_AUTHOR_NAME环境变量实际上是将可选参数和配置传递给钩子的主要方式。因此,在这些钩子中只从环境中读取数据是没有问题的。

git使用其中一个环境变量进行调用时,它将使用它们来设置作者信息。如果没有,git则会从 repo 或全局配置中读取并适当地设置环境变量在调用钩子之前。

答案2

对于提交者的详细信息,事实证明正确的方法是使用git var GIT_COMMITTER_IDENT

对于作者详细信息,@acran 的答案是正确的,因此将被接受。

相关内容