0

Mercurial の新しいバージョンがリリースされると、開発者、デザイナー、およびその他のユーザーが Mercurial の承認済み (またはそれ以降) のバージョンを使用することを何とか強制したいと考えています。たとえば、現在バージョン 1.8.3 を使用していますが、ユーザーが 1.8.3 より前のバージョンを使用してリポジトリにアクセスするのを自動的に防止/拒否し、それ以降のバージョンは許可するようにしたいと考えています。 フックでこれを行うことはできますか?

サーバーを Windows と IIS で実行しています。適切なバージョンでないクライアントに対して 500 エラーを返す IIS 拡張機能を作成することを考えましたが、クライアントは HTTP 要求でバージョン情報を送信せず、"mercurial/proto 1.0" のみを送信します。これは、Mercurial のバージョン 1.0 を意味すると思います。 HTTP プロトコル。

私が望むことは可能ですか?これを解決する他の方法はありますか?

Mercurial では大文字と小文字が区別されるため、これを行う必要があります。大文字と小文字を区別しない Windows を 100% 使用しています。これにより、多数のケース折りたたみ衝突が発生します。 私たちはそれらに何時間も費やしています。Mercurial では大文字と小文字の処理が改善されましたが、大文字と小文字の折り畳みの問題が発生する可能性がある状況がまだ残っています。 新しいバージョンではケース処理の改善が行われるため、修正に時間を費やす必要がある新しい問題が発生しないように、何らかの方法でユーザーをそれらのバージョンに強制する必要があります。

4

2 に答える 2

2

これを実施したい強い理由はありますか?Mercurial には、バージョン機能自体を処理する内部メカニズムがあります。たとえば、1.6 にまだ存在しない機能を使用するリポジトリを 1.8.3 で作成すると、1.6 クライアントはそのようなリポジトリとの対話を拒否します。つまり、mercurial 自体がアクセスを拒否しますが、バージョン番号ではなく、実際の機能に基づいています。このようにして、新しいリリースがどちらの方法でも互換性を壊さない場合は、両方のバージョンを問題なく一緒に使用できます。

内部的には、Mercurial が必要な機能のリストをリポジトリのメタ情報に追加し、このリストを使って何かをしようとする前にこのリストをチェックするため、これは機能します。リストに Mercurial が (まだ) 知らない機能が含まれている場合、Mercurial はそれと意味のある対話ができないと結論付け、協力を拒否します。

したがって、IMO で行う最善の方法は、開発者に最新バージョンを使用することを要求するポリシーを単に制定することですが、追加の技術的手段を追加することはありません。誰かがあまりにも古いバージョンでプッシュしようとすると、エラー メッセージが表示されます。不満がある場合は、公式のポリシーを参照するだけです。

于 2011-08-23T19:38:30.097 に答える
0

Windows を使用している場合は、どうにかしてドメイン ポリシーを使用して Mercurial インストーラーを展開するのはどうですか?

于 2011-08-23T19:56:39.890 に答える