web-dev-qa-db-ja.com

gitフック:クローンフックはありますか?

コミットに関するメタ情報を外部データベースに保存します。クローンまたはチェックアウト中に、このデータベースを参照する必要があり、複製されたリポジトリ内のファイルにメタ情報をコピーします。単にファイルを使用するのではなく、データベースが必要です。これは、インデックス作成や検索などのためです...

クローンフックがあればこれをトリガーできると思いました。 .git/hooksのサンプルにクローンフックが見つかりませんでした。ありますか?チェックアウト後フックはクライアント側で唯一の可能性ですか?

32
maxmelbin

これを行う1つの方法は、clone --templateオプションを使用することです。

クライアント側フックが--templateスイッチの値として格納される場所を指定します。フックがクローンにコピーされ、チェックアウト後のフックがすぐに実行されます!

23
maxmelbin

リモートリポジトリをcloneすると、フックは作業コピーに対してローカルであり、作成するため、クライアント側のフックを実行できません。ゼロから。リモートリポジトリから新しい変更をpullすると、ローカルのpost-mergeフックが存在する場合、それが実行されます。

pull操作の結果として、サーバー上では何も実行されません。 Push操作は、サーバーのupdateおよびpost-updateフックをトリガーします。

詳細は Git Book を参照してください。

12
larsks

いいえ、クローンフックはありません。

8
ralphtheninja

私は遅れていますが、回避策があります:

  1. git cloneの実行をキャプチャし、trap set_var_on_git_clone DEBUGを使用して変数を設定します。ここで、set_var_on_git_cloneはユーザー定義関数です。 (例 https://Gist.github.com/KeyAmam/a6afcabc3a724fc4a541aca7629c3ff6

  2. post-checkoutスクリプトの変数を確認し、ケースでいくつかのことを行います。スクリプトの最後で変数をクリアします。 (例 https://Gist.github.com/KeyAmam/6a0e8805c0b6a662adb6bcf8118a089a

これはBashでのみ機能しますが、他のシェルでも同様のことができます。

0
kskkskksk