Git仓库克隆日志记录

10
我希望您能够监控我的git代码库中的克隆活动,但我找不到任何显示如何设置此功能或检索此信息的内容。
这是否可能?如果是,那么该如何设置,并且如何检索日志信息呢?
3个回答

2
您可以使用 post-checkout 钩子来更新服务器上的数据库或文件。该钩子在客户端执行(即进行克隆的人将执行脚本),因此您需要从那个角度设计您的脚本。另外,通过在git clone命令中添加--no-checkout选项,也可以在不执行此钩子的情况下克隆存储库。
一个简单可靠的方法是让服务器运行一个小的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

我本来也想发同样的问题,但是找到了这个。 更好的方法是将git-upload-pack命令包装起来以记录调用。不过这只适用于ssh,请参见:git中的预取钩子功能

但只有root用户才能这样做。这对我没用,但或许对其他人有用。

您可以始终安装一个“git服务器”来控制访问,例如gitolite(http://sitaramc.github.com/gitolite/master-toc.html)。您可以直接记录日志,也可以扩展其功能。


0

我认为在克隆的服务器端存储库中没有任何钩子或类似的东西运行。Git可能只是使用指定的协议(ssh,http等)并获取相应的文件。您可以尝试以某种方式监视该活动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接