私はgitリポジトリ内のクローニングアクティビティを監視するつもりですが、これを設定する方法やこの情報を取得する方法を示すものは何も見つかりません。gitリポジトリのクローニングログ
これも可能ですか?もしそうなら、これをどのようにセットアップすることができ、ロギング情報をどのように取り出すことができますか?
私はgitリポジトリ内のクローニングアクティビティを監視するつもりですが、これを設定する方法やこの情報を取得する方法を示すものは何も見つかりません。gitリポジトリのクローニングログ
これも可能ですか?もしそうなら、これをどのようにセットアップすることができ、ロギング情報をどのように取り出すことができますか?
クローン上のリポジトリのサーバー側で実行されるフックなどがあるとは思われません。 gitはおそらく指定されたプロトコル(ssh、http、...)を使用し、適切なファイルを取得します。あなたは何とかその活動を監視しようとすることができます。
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を参照してください。
私は同じ質問を投稿するつもりでしたが、これを見つけました。 私が見つけたほうが、git-upload-pack
コマンドをラップしてコールを記録する方が良いでしょう。これはsshでしか動作しませんが、以下を参照してください。pre-fetch hook functionality in git
しかしrootだけがこれを行うことができます。それは私のためには機能しませんが、おそらく他の人のための解決策です。
gitolite(http://sitaramc.github.com/gitolite/master-toc.html)のようなアクセスを制御するための "git server"はいつでもインストールできます。あなたはそれを直接ログに記録することも、機能を拡張することもできます。