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