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 プロセスがこのリポジトリにアクセスすると、ほとんど追加された変更セットが永続的であるかのように表示されます。これを回避するための措置を講じないと、競合状態が発生する可能性があります。」
スクリプトがチェンジセットを拒否している最中に誰かがプルを行った場合に起こるランダムな奇妙さについて、私は本当に頭がおかしいわけではありません。使用できる別のフックはありますか? そうでない場合、私が取るべき「それらを回避するための手順」は何ですか? フック中にリポジトリをロックする方法はありますか?