2012-07-30 21 views
7

私はgitリポジトリ内のクローニングアクティビティを監視するつもりですが、これを設定する方法やこの情報を取得する方法を示すものは何も見つかりません。gitリポジトリのクローニングログ

これも可能ですか?もしそうなら、これをどのようにセットアップすることができ、ロギング情報をどのように取り出すことができますか?

答えて

0

クローン上のリポジトリのサーバー側で実行されるフックなどがあるとは思われません。 gitはおそらく指定されたプロトコル(ssh、http、...)を使用し、適切なファイルを取得します。あなたは何とかその活動を監視しようとすることができます。

2

post-checkoutフックを使用して、サーバー上のデータベースまたはファイルを更新できます。このフックはクライアント側で実行されます(つまり、クローンを実行する人がスクリプトを実行します)。そのため、その観点からスクリプトを設計する必要があります。また、オプションをgit cloneに追加することで、このフックを実行せずにリポジトリをクローンすることもできます。

シンプルで信頼性の高いアプローチは、サーバがcurlまたは類似の機能を使用して呼び出し可能な小さなRESTful Webサービスを実行するようにすることです。たとえば:

#!/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だけがこれを行うことができます。それは私のためには機能しませんが、おそらく他の人のための解決策です。

gitolite(http://sitaramc.github.com/gitolite/master-toc.html)のようなアクセスを制御するための "git server"はいつでもインストールできます。あなたはそれを直接ログに記録することも、機能を拡張することもできます。

関連する問題