2

I have a gitolite server and I would like to setup a server-side hook so that when anyone clones a repository located on it, an email is sent out to the administrator. Right now seems that is only able to do it for push but not for cloning.. Was I wrong?

4

2 回答 2

1

git 没有服务器端 fetch 钩子。gitolite 具有PRE_GITPOST_GIT 触发器,您可以使用它们来检测某人何时正在获取(运行git-upload-pack),但克隆和正常获取之间的区别是人类语义之一。

如果客户端在协商中没有提供任何本地提交,那么检测可能是克隆的唯一方法是在协议层内部,但它仍然可能只是手动运行 fetch 的人。

最后,随着 git 的分发,从您的服务器克隆或从其他地方克隆(可能是同事的计算机/usb 记忆棒或同一台计算机中的不同 repo),然后从服务器获取其余部分基本上是相同的,因为没有强大的存储库之间的绑定。

于 2013-08-12T10:43:07.607 回答
1

由于 git clone (server side) 上没有真正的钩子,因此您可以使用一种可能的解决方法:

Gitolite 会留下每个操作的日志,正如我在“ Is there a git activity log? ”中说明的那样。
但是,它只记录 git-upload-pack 实例,这意味着您知道 git pull 或 git clone,而不知道刚刚发生了哪个操作(pull 或 clone)

如果您设置了一个监控该 gitolite 日志的 cron 作业,您可以在检测到该 git-upload-pack 实例的新出现时发送一封电子邮件。

于 2013-08-12T12:06:27.547 回答