2012-07-30 16 views
7

Ich bin auf der Suche nach der Klon-Aktivität in meinem Git-Repository, aber ich kann nichts finden, das zeigt, wie Sie dies einrichten oder wie Sie diese Informationen abrufen.Git Repository Klonen Protokollierung

Ist das überhaupt möglich? Wenn ja, wie kann dies eingerichtet werden und wie erhalten Sie die Protokollinformationen?

Antwort

0

Ich glaube nicht, dass es einen Haken oder etwas Ähnliches gibt, das in der Server-Seite des Repositorys auf einem Klon läuft. git verwendet wahrscheinlich nur das angegebene Protokoll (ssh, http, ...) und ruft die entsprechenden Dateien ab. Sie könnten versuchen, diese Aktivität irgendwie zu überwachen.

2

Sie können einen post-checkout Hook verwenden, um eine Datenbank oder Datei auf Ihrem Server zu aktualisieren. Dieser Hook wird auf der Clientseite ausgeführt (dh die Person, die den Klon ausführt, führt das Skript aus). Aus diesem Grund müssen Sie Ihr Skript entwerfen. Es ist auch möglich, das Repository zu klonen, ohne diesen Hook auszuführen, indem Sie die Option --no-checkout zu git clone hinzufügen.

Ein einfacher und zuverlässiger Ansatz wäre, wenn der Server einen kleinen RESTful-Webdienst ausführt, den Ihr Hook mit curl oder einer ähnlichen Einrichtung aufrufen kann. Zum Beispiel:

#!/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() 

Siehe http://www.kernel.org/pub/software/scm/git/docs/githooks.html.

0

Ich wollte die gleiche Frage stellen, aber finde diese heraus. Das bessere, das ich finden könnte, ist das Umhüllen des git-upload-pack Befehls, um den Anruf zu protokollieren. Dies funktioniert nur über SSH, aber siehe: pre-fetch hook functionality in git

Aber nur Root wird dazu in der Lage sein. Es funktioniert nicht für mich, aber vielleicht ist es eine Lösung für andere.

Sie können immer einen "git server" installieren, um den Zugriff zu kontrollieren, wie zum Beispiel gitolite (http://sitaramc.github.com/gitolite/master-toc.html). Entweder Sie können es direkt loggen oder Sie können seine Funktionalität erweitern.

Verwandte Themen