8

gitリポジトリ内のクローン作成アクティビティを監視しようとしていますが、これを設定する方法やこの情報を取得する方法を示すものが見つかりません。

これも可能ですか?もしそうなら、これをどのように設定できますか?また、ログ情報をどのように取得しますか?

4

3 に答える 3

2

フックを使用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を参照してください。

于 2012-08-27T14:30:57.787 に答える
0

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

于 2012-07-30T10:58:47.930 に答える
0

同じ質問を投稿するつもりでしたが、これを見つけてください。私が見つけたより良いのはgit-upload-pack、呼び出しをログに記録するコマンドをラップすることです。これは ssh でのみ機能しますが、次を参照してください: git のプリフェッチ フック機能

ただし、これを実行できるのは root だけです。私にはうまくいきませんが、おそらく他の人にとっては解決策です。

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

于 2012-10-26T16:38:46.373 に答える