git サーバー側には 3 つのフックがあります
リーリー受信後にスクリプトを実行したいのですが、クライアントがプッシュするときにプッシュされるブランチ名を知る必要があります。しかし、多くの情報を調べた結果、
フック スクリプトがクライアント プッシュ情報を取得する方法については言及されていません。
たとえば、git クライアント a は、ブランチ hotfix1.2.3 のいくつかの更新を git サーバー b にプッシュします。このプッシュ動作のブランチ名 (hotfix1.2.3) に基づいて、git サーバー b のフックでスクリプトを実行したいと考えています。 . .どうやってするの?
サーバー側フックのリンクの内容によれば、post-receive は pre-receive と同様に、実行前に 3 つのパラメーターを取得することがわかります。
<old-value> <new-value> <ref-name>
スクリプトはパラメータを取りませんが、プッシュされる各 ref は次の形式で標準入力の別の行でスクリプトに渡されます:b6b36c697eb2d24302f89aa22d9170dfe609855b 85baa88c22b52ddd24d71f05 などd b31f4e46d579095 refs/heads/master
https://git-scm.com/book/zh/v...
異なるフックは入力ストリームで異なるパラメータを運びます。
pre-receive
クライアントからのプッシュ操作を処理する場合、最初に呼び出されるスクリプトは pre-receive です。 標準入力から一連のプッシュされた参照を取得します。ゼロ以外の値で終了した場合、すべてのプッシュ コンテンツは受け入れられません。 このフックを使用すると、参照に対する非早送り更新を防止したり、プッシュによって変更されたすべての参照およびファイルへのアクセスを制御したりできます。
update
更新スクリプトは、更新されるブランチごとに 1 回実行される点を除いて、pre-receive スクリプトと非常によく似ています。 プッシャーがコンテンツを複数のブランチに同時にプッシュしている場合、pre-receive は 1 回だけ実行されますが、Update はプッシュされたブランチごとに 1 回実行されます。 標準入力からコンテンツを読み取りませんが、参照 (ブランチ) の名前、プッシュ前の参照が指すコンテンツの SHA-1 値、コンテンツの SHA-1 値の 3 つのパラメーターを取ります。ユーザーはプッシュするつもりです。 更新スクリプトがゼロ以外の値で終了した場合、対応する参照のみが拒否され、残りは引き続き更新されます。
post-receive
post-receive フックは、プロセス全体が完了した後に実行され、他のシステム サービスを更新したり、ユーザーに通知したりするために使用できます。 プリレシーブと同じ標準入力データを受け入れます。 その用途には、メーリング リストへの投稿、継続的統合サーバーへの通知、チケット追跡システムの更新などが含まれます。コミット情報を分析して、チケットが問題であるかどうかを判断することもできます。 このスクリプトはプッシュ プロセスを強制終了することはできませんが、クライアントは実行が完了するまで接続されたままになります。そのため、他の作業を行う場合は時間がかかるため、注意して使用してください。