git存储库克隆日志
我希望在我的git存储库中监视克隆活动,但是我找不到任何显示如何设置或如何检索此信息的内容git存储库克隆日志,git,logging,repository,Git,Logging,Repository,我希望在我的git存储库中监视克隆活动,但是我找不到任何显示如何设置或如何检索此信息的内容 这可能吗?如果是这样的话,该如何设置以及如何检索日志信息?我认为克隆上存储库的服务器端没有运行任何钩子或类似的东西。git可能只是使用指定的协议(ssh、http等)并获取适当的文件。您可以尝试以某种方式监视该活动。您可以使用签出后挂钩来更新服务器上的数据库或文件。这个钩子在客户端运行(也就是说,执行克隆的人将执行脚本),因此您需要从这个角度设计脚本。另外,通过将--no checkout选项添加到git
这可能吗?如果是这样的话,该如何设置以及如何检索日志信息?我认为克隆上存储库的服务器端没有运行任何钩子或类似的东西。git可能只是使用指定的协议(ssh、http等)并获取适当的文件。您可以尝试以某种方式监视该活动。您可以使用
签出后挂钩来更新服务器上的数据库或文件。这个钩子在客户端运行(也就是说,执行克隆的人将执行脚本),因此您需要从这个角度设计脚本。另外,通过将--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()
请看。我本来想发布相同的问题,但发现了这个问题。
我能找到的更好的方法是包装git upload pack
命令来记录调用。这只适用于ssh,但请参见:
但只有root才能做到这一点。这对我不起作用,但也许对其他人来说是一个解决办法
您可以安装一个“git服务器”来控制访问,比如gitolite()。您可以直接记录它,也可以扩展它的功能