3

誰かが間違ったユーザー名で変更をプッシュしないようにしたい「中央」リポジトリがあります。

しかし、ポジティブリストに対してユーザー名をテストするフックを作成する方法がわかりません。MercurialAPIで

ctx.user()
それは私が私のポジティブリストをテストしたいもののようです。

また、フックは、リポジトリクローンの一部として配布されるprecommitフックである場合もあれば、pre-incomingまたはそのようなものとして中央リポジトリのフックである場合もあります。

ヘルプやポインタをいただければ幸いです。

4

2 に答える 2

4

Bitbucketに2つの機能例を投稿しました。どちらの例も、コミットメッセージで特定の形式のテキスト(問題追跡ケースIDなど)を検索するためのものですが、有効なユーザーのリストに対してユーザーをチェックするように簡単に変更できます。

最初の例は、実際には「commit」コマンドをラップするMercurial拡張機能です。適切なテキスト(またはあなたの場合は有効なユーザー)が見つからない場合は、コミットがまったく発生しなくなります。次の行を追加することにより、.hgrcファイルでこれを有効にできます。

[extensions]
someName = path/to/script/commit-msg-check.py

2番目の例では、インプロセスpretxncommitフックを使用します。これは、コミットが行われたときから永続的になる前までの間に実行されます。このチェックが失敗すると、コミットが自動的にロールバックされます。これらの行を追加することにより、.hgrcファイルでこれを有効にできます(同じファイル/関数名を保持していると仮定します)。

[hooks]
pretxncommit.example = python:commit-msg-check-hook.CheckForIssueRecord

これらのフック内で好きなPythonコードを実行できるため、ユーザーの検証はさまざまな方法で実行できます。

于 2011-04-16T04:02:43.567 に答える
1

dlsの例をありがとう。

結局、私はそれをpretxnchangegroupフックとして実行し、次にとを使用しhg loggrepコミットの作成者フィールドをテストすることにしました。

[hooks]
pretxnchangegroup.usercheck = hg log --template '{author}\n' -r \ 
$HG_NODE: | grep -qe 'user1\|user2\|etc'

もちろん、usercheckが失敗したことを除いて、非常に良いフィードバックは提供されません。でも今のところは十分だと思います。

于 2011-04-26T09:44:01.120 に答える