私は gitolite サーバーを持っており、サーバー側のフックをセットアップして、誰かがそこにあるリポジトリを複製すると、管理者に電子メールが送信されるようにしたいと考えています。現在、それはプッシュに対してのみ実行でき、クローン作成に対しては実行できないようです..私は間違っていましたか?
2 に答える
git clone (サーバー側)には実際にはフックがないため、可能な回避策が残されています。
「 Git アクティビティ ログはありますか? 」で説明したように、Gitolite はすべての操作のログを残します。
ただし、記録されるのは git-upload-pack インスタンスのみです。つまり、どの操作 (pull または clone) が発生したかを知らなくても、git pull または git clone について知ることができます。
その gitolite ログを監視する cron ジョブをセットアップすると、その git-upload-pack インスタンスの新しい発生を検出したときに電子メールを送信できます。
git からのサーバー側フェッチ フックはありません。gitolite にはPRE_GIT
、誰かがフェッチしている (実行中) ことを検出するために使用できるPOST_GIT
トリガーがgit-upload-pack
ありますが、クローンと通常のフェッチの違いは人間のセマンティクスです。
クライアントがネゴシエーションでローカル コミットを提供しない場合、クローンである可能性があるものを検出する唯一の方法は、プロトコル層の内側にあることですが、手動でフェッチを実行している誰かである可能性があります。
最後に、git は配布されているため、サーバーからクローンを作成するか、他の場所 (おそらく同僚のコンピューター/USB スティック、または同じコンピューター内の別のリポジトリ) からクローンを作成し、サーバーから残りをフェッチすることは基本的に同じです。リポジトリ間のバインディング。