4

Mercurial サーバーへのプッシュで着信変更セットを調べ、変更セットが特定の標準に準拠していない場合はプッシュを拒否するスクリプトを書きたいと思います。私のオプションはprechangegroup、、、pre-changegroupおよびpretxnchangegroupフックのようです。残念ながら、prechangegroupおよびpre-changegroupフックは着信変更セットにアクセスできないようです。そのため、 が必要になりますpretxnchangegroupしかし、 http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html#sec:hook:pretxnchangegroupのドキュメントによると、これにより、リポジトリを使用している間に一貫性のない状態になる可能性があります。フックが実行されています:

「このフックの実行中に、他の Mercurial プロセスがこのリポジトリにアクセスすると、ほとんど追加された変更セットが永続的であるかのように表示されます。これを回避するための措置を講じないと、競合状態が発生する可能性があります。」

スクリプトがチェンジセットを拒否している最中に誰かがプルを行った場合に起こるランダムな奇妙さについて、私は本当に頭がおかしいわけではありません。使用できる別のフックはありますか? そうでない場合、私が取るべき「それらを回避するための手順」は何ですか? フック中にリポジトリをロックする方法はありますか?

4

1 に答える 1

4

引用された段落のコメントを展開すると、Meister Geislerは、hg 1.2 以降に問題が解決され、まだ永続的ではない着信変更セットが表示されないため、プルされないという一部のユーザーの観察を確認しました。

于 2011-02-11T03:44:17.510 に答える