【问题标题】:git repository cloning logginggit仓库克隆日志
【发布时间】:2012-07-30 10:47:48
【问题描述】:

我希望监视我的 git 存储库中的克隆活动,但是我找不到任何显示如何设置或如何检索此信息的内容。

这甚至可能吗?如果是这样,如何设置以及如何检索日志信息?

【问题讨论】:

    标签: git logging repository


    【解决方案1】:

    您可以使用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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我打算发布同样的问题,但发现了这个问题。 我能找到的更好的是包装git-upload-pack 命令来记录通话。这只能通过 ssh 工作,但请参阅:pre-fetch hook functionality in git

        但只有 root 才能做到这一点。它对我不起作用,但也许它是对其他人的解决方案。

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

        【讨论】:

          猜你喜欢
          • 2015-06-12
          • 2014-02-26
          • 2015-08-11
          • 1970-01-01
          • 1970-01-01
          • 2017-05-05
          • 2016-04-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多