4

変更セットの伝播メカニズムを構築しましたが、それは新しい変更セットのバンドルとアンバンドルに依存しています。フックを使用すると、プル、プッシュ、またはアンバンドル中にchangegroupフックが実行されるため、周期的な動作が発生します。必要なのは、フックが完全に機能する commit の後に同期を行うことですが、 pushの後にも行います。commit

フックは、そのリポジトリから別のリポジトリにpost-pushプッシュするときに実行されるため、答えではないことに注意してください。このシナリオでは、基本的に、新しい変更セットがプッシュの結果である場合にのみ実行される の特別な動作が必要です。changegroup

そのように機能するフックはありますか?

4

2 に答える 2

3

フックのソース引数を確認してください。それは、チェンジbundleグループをアンバンドルするserveとき、チェンジセットが HTTP(S) または SSHpush経由で入ってくるとき、およびローカル ファイル システム上のリポジトリへのプッシュを介して入ってくるときです。

HG_SOURCEこの引数は、外部プロセスとして実行されるフックの環境変数として、およびsourceインプロセス フックのキーワード引数として見つかります。

于 2012-01-18T23:13:37.043 に答える
2

完全を期すために、これが機能するスクリプトです(@MartinGeislerの回答に従って)。それを呼びましょうpushhook.py

def pushhook(ui, repo, source=None, **kwargs):
    if source == 'push':
        # Perform push-only operations here

そして、hgrc次のようになります。

[hooks]
changegroup.push = python:.hg/pushhook.py:pushhook
于 2012-06-19T16:42:01.770 に答える