我希望监控我的git存储库中的克隆活动但是我找不到任何显示如何设置它或如何检索此信息的内容。
这甚至可能吗?如果是这样,如何设置,以及如何检索日志信息?
答案 0 :(得分:2)
您可以使用post-checkout
挂钩更新服务器上的数据库或文件。这个钩子在客户端运行(也就是说,执行克隆的人将执行脚本),因此您需要从该角度设计脚本。此外,通过将--no-checkout
选项添加到git clone
,可以在不执行此挂钩的情况下克隆存储库。
一种简单可靠的方法是让服务器运行一个小的RESTful Web服务,钩子可以使用curl
或类似的工具调用它。例如:
#!/usr/bin/env python
import socket, sys, urllib, pycurl
service_url = "https://my.server.dns/service.php"
data = urllib.urlencode({
'prev': sys.argv[1],
'new': sys.argv[2],
'branch': sys.argv[3],
'host': socket.gethostname()
})
c = pycurl.Curl()
c.setopt(pycurl.URL, service_url)
c.setopt(pycurl.POSTFIELDS, data)
c.perform()
请参阅http://www.kernel.org/pub/software/scm/git/docs/githooks.html。
答案 1 :(得分:0)
我认为克隆上存储库的服务器端没有任何钩子或类似的东西。 git可能只是使用指定的协议(ssh,http,...)并获取相应的文件。您可以尝试以某种方式监视该活动。
答案 2 :(得分:0)
我打算发布同样的问题但发现这个问题。
我能找到的更好的是包装git-upload-pack
命令来记录呼叫。这只适用于ssh,但请参阅:pre-fetch hook functionality in git
但只有root才能做到这一点。它对我不起作用,但也许它是其他人的解决方案。
您可以随时安装“git服务器”来控制访问,例如gitolite(http://sitaramc.github.com/gitolite/master-toc.html)。您可以直接登录,也可以扩展它的功能。