0

コミットが永続化される前に実行したいファイル commit_hooks.py に 2 つの関数を書きましたが、それらを検出するために hgrc を記述する方法がわかりません。

関数ヘッダーは次のとおりです。

def precommit_bad_merge(ui, repo, parent1=None, parent2=None, **kwargs):
...

def precommit_bad_branching(ui, repo, **kwargs):
...

この「ガイド」を使用してみましたが、ドキュメンテーションは「マニュアルページ」が多すぎます。以下は、機能しないアウトキャストです。

[hooks]
precommit = ..\..\mno2\commit_hooks.py

アップデート! フック行を次のように書き換えます。

precommit = D:\environments\next\mno2\commit_hooks.py

Mercurial に precommit フックを検出させますが、何らかの理由で常にステータス 1 で終了します。

4

2 に答える 2

2

[hooks]次のようにセクションを設定します。

[hooks]
precommit.foo = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_merge
precommit.bar = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_branching

使用した行の構文precommitは外部フック用であるため、python ファイルを自己完結型スクリプトとして扱っていました (インプロセス フックに関数シグネチャを使用しているため、そうではないと思います)。

パスにpython実行可能ファイルが必要な場合があります(私はそうしています)。

詳細については、決定版ガイドのインプロセス フックに関するセクションを参照してください。コメントには役立つ情報が隠されています。

于 2010-10-02T15:31:34.617 に答える
0

「man pagey」ドキュメントには、Python フック構文に関するセクションがあります。

Python フックの構文は次のとおりです。

hookname = python:modulename.submodule.callable
hookname = python:/path/to/python/module.py:callable

Python フックは Mercurial プロセス内で実行されます。各フックは、少なくとも 3 つのキーワード引数で呼び出されます: ui オブジェクト (キーワード ui)、リポジトリ オブジェクト (キーワード repo)、および使用されるフックの種類を示す hooktype キーワードです。上記の環境変数としてリストされている引数は、キーワード引数として渡されます。HG_ プレフィックスはなく、名前は小文字です。

Python フックが「真」の値を返すか、例外を発生させた場合、これは失敗として扱われます。

于 2010-10-01T16:41:38.313 に答える