簡體   English   中英

git存儲庫克隆日志

[英]git repository cloning logging

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

這有可能嗎? 如果是這樣,如何設置它以及如何檢索日志記錄信息?

您可以使用post-checkout掛鈎來更新服務器上的數據庫或文件。 該掛鈎在客戶端運行(也就是說,執行克隆的人員將執行腳本),因此您需要從該角度設計腳本。 另外,可以通過在git clone添加--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

我認為克隆上的存儲庫的服務器端沒有運行任何掛鈎或類似內容。 git可能只是使用指定的協議(ssh,http,...)並獲取適當的文件。 您可以嘗試以某種方式監視該活動。

我本來打算發布同樣的問題,但發現了這個問題。 我能找到的更好的辦法是包裝git-upload-pack命令來記錄調用。 這只能在ssh上運行,但請參閱: git中的預取鈎子功能

但是只有root才能執行此操作。 它對我不起作用,但也許對其他人來說是解決方案。

您可能總是會安裝“ git服務器”來控制訪問,例如gitolite( http://sitaramc.github.com/gitolite/master-toc.html )。 您可以直接將其記錄下來,也可以擴展它的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM