2012-07-30 177 views
7

我正在監視我的git存儲庫中的克隆活動,但是我找不到任何顯示如何設置或如何檢索此信息的內容。git存儲庫克隆日誌記錄

這甚至可能嗎?如果是這樣,如何設置,以及如何檢索日誌記錄信息?

回答

0

我不認爲有任何鉤子或類似的東西在克隆的存儲庫的服務器端運行。 git可能只是使用指定的協議(ssh,http,...)並獲取相應的文件。您可以嘗試以某種方式監視該活動。

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

0

我打算髮表相同的問題,但找到了這一個。 我能找到的更好的方法是包裝git-upload-pack命令以記錄呼叫。這隻會通過ssh看到:pre-fetch hook functionality in git

但是隻有root才能做到這一點。它對我來說不起作用,但也許它是其他人的解決方案。

你總是可以安裝一個「git服務器」來控制訪問像gitolite(http://sitaramc.github.com/gitolite/master-toc.html)。您可以直接登錄,也可以擴展它的功能。