リソース変更フック
リポジトリー・プロバイダーに関連する興味深い機能の多くは、プロバイダー用に構成されたプロジェクト内のリソースをユーザーが操作したときに発生します。
ユーザーがリソースに加える変更を認識するため、プロバイダーはリソース変更フックをインプリメントできます。
リソース・プラグインは、これらのフックを拡張ポイントとして組み込みます。
IMoveDeleteHook および
IFileModificationValidator
についてのドキュメンテーションに、これらのフックのインプリメントの詳細について説明があります。
チーム・プラグインは、汎用フックをリソース・プラグインに登録することによって、フックと該当するリソースとの関連付けを最適化および単純化します。
これらの汎用フックは、指定されたリソースについてリポジトリー・プロバイダーを単純に検索して、フックを取得します。
これには、各プロバイダー・インプリメンテーションに、リソースがそのプロバイダーによって管理されているかどうかを最初に検査しなければならないフックを登録させるのではなく、
1 つのプロバイダー・フックのみを呼び出すという利点があります。
これは、プラグインにとっては、
RepositoryProvider
内のメソッドをオーバーライドすることによって、必要なフックが指定されることを意味します。
これらのメソッドのデフォルト・インプリメンテーションは、ヌル応答を返して、フックの必要がないことを示します。
- getMoveDeleteHook - プロバイダー用の該当する
IMoveDeleteHook を返します。
このフックによって、プロバイダーが移動と削除の発生方法を制御することが可能になり、それらの発生を防ぐ機能が組み込まれます。
インプリメンターは、ファイル、フォルダー、およびプロジェクトの、移動または削除の代替インプリメンテーションを提供できます。
CVS クライアントは、このフックを使用して、フォルダーの削除をモニターし、削除されるフォルダー内に含まれるファイルを記憶して、
後で必要な場合にリポジトリーから削除できるようにします。
- getFileModificationValidator - プロバイダー用の該当する
IFileModificationValidator を返します。
このフックによって、プロバイダーはファイルの変更または保管を事前に検査できます。
このフックは一般に、リポジトリー・プロバイダーがペシミスティック・バージョン管理をインプリメントするときに必要になります。
ペシミスティック・バージョン管理では、ファイルは変更する前に検査されなければならず、常に 1 つのクライアントのみがファイルを検査できます。
ペシミスティック・バージョン管理は、ファイルの編集のたびに (ファイルがまだチェックアウトされていない場合) ファイルをチェックアウトして、
ファイルを保管するときにチェックインすることによって、インプリメントできます。
CVS はオプティミスティック・バージョン管理方式を使用するため、このフックをインプリメントしません。
