如何设置git hook以在克隆时发送电子邮件

时间:2013-08-12 07:32:17

标签: git gitolite

我有一个gitolite服务器,我想设置一个服务器端钩子,这样当任何人克隆位于其上的存储库时,会向管理员发送一封电子邮件。现在似乎只能用于推送但不能用于克隆..我错了吗?

2 个答案:

答案 0 :(得分:1)

git没有服务器端提取钩子。 gitolite有PRE_GITPOST_GIT triggers,您可以使用它来检测某人何时正在提取(运行git-upload-pack)但克隆与普通提取之间的区别是人类语义之一。

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

最后,随着git的发布,从服务器克隆或从其他地方克隆(可能是同事的计算机/ usb棒或同一台计算机上的不同仓库),然后从服务器中取出其余部分基本相同,就像那里一样在存储库之间没有强大的约束力。

答案 1 :(得分:1)

由于实际上没有hook on git clone (server side),因此可能会出现一种解决方法:

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

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