これは この質問 にいくらか関連していますが、別の質問です。
SSHおよび Mercurial-server を介してユーザーに提供される中央のHgリポジトリがあります。 Mac、Linux、Windowsのクライアントが多数接続しています。
Windowsユーザーの1人がリポジトリを破損し、中央のリポジトリにプッシュバックして破損したことが2回発生しました。中央リポジトリが破損する場合にトランザクションが受け入れられないように、中央リポジトリに着信フックスクリプトを記述したいと思います。
残念ながら、私はそのようなスクリプトを書くのに十分なMercurialについて知りません。他の誰かがこれに遭遇した可能性はありますか?個人的には、hgがデフォルトでこれを行わない理由はよくわかりません。
Mercurialの最近のバージョン(1.5以降)は、受信データの検証をサポートしています。追加
[server]
validate = True
サーバーのhg構成に(.hg/hgrc
またはhgwebdir構成は正常に機能するはずです)サーバーに受信データを検証させ、無効なプッシュを拒否させます。クライアントには、次のようなエラーが表示されます。
remote: abort: missing file data for beta:dddc47b3ba30e54484720ce0f4f768a0f4b6efb9 - run hg verify
お役に立てば幸いです。
たぶん、リポジトリへのプッシュは完全に避けるべきです。 Mercurialとその分散型の性質により、誰もがブランチを持つことができ、準備ができたと感じたら、彼らはあなたに話し、あなたは彼らから引っ張ります。コミットアクセスの問題も、問題を壊すプッシュもありません...
これは、私がSVNからMercurialに移行していたときに、少なくとも私の友人からのアドバイスです。
これがあなたの選択肢であるかどうかはわかりませんが、すべての人のために個人リポジトリを設定してから、必要な人からプルする方が、危険なプッシュをキャッチしようとするよりも少ない作業で済みます。
考えられる代替案の1つは、次のとおりです。
このソリューションは必要なものではありませんが、少なくとも、破損した場合にリポジトリをロールバックする方法があります。
David Herronのブログ と同じことはできませんが、事前ルーティングではなく、中央リポジトリの事前コミットフックで実行しますか?