この付録では、TortoiseSVNの機能のいくつかの実装について、より詳細な議論を行います。
すべてのファイルとフォルダは、Subversionライブラリによって報告されるSubversionステータス値を持ちます。コマンドラインクライアントでは、これらは一文字のコードで表されますが、TortoiseSVNではアイコンオーバーレイを使用してグラフィカルに表示されます。オーバーレイの数には限りがあるため、各オーバーレイは複数のステータス値を表す場合があります。
競合オーバーレイは、更新または切り替えによってローカルの変更とリポジトリからダウンロードされた変更との間に競合が発生するconflicted
状態を表すために使用されます。また、操作が完了できない場合に発生するobstructed
状態を示すためにも使用されます。
変更オーバーレイは、ローカルに変更を加えたmodified
状態、リポジトリからの変更がローカルの変更とマージされたmerged
状態、およびファイルが削除され、同じ名前の別のファイルに置き換えられたreplaced
状態を表します。
削除オーバーレイは、アイテムが削除予定であるdeleted
状態、またはアイテムが存在しないmissing
状態を表します。当然ながら、欠落しているアイテム自体はオーバーレイを持つことはできませんが、子アイテムの1つが欠落している場合、親フォルダをマークすることができます。
追加オーバーレイは、アイテムがバージョン管理に追加されたときのadded
ステータスを表すために単純に使用されます。
Subversion管理下オーバーレイは、normal
状態のアイテム、または状態がまだ不明なバージョン管理されたアイテムを表すために使用されます。TortoiseSVNはステータスを収集するためにバックグラウンドキャッシュプロセスを使用するため、オーバーレイが更新されるまでに数秒かかる場合があります。
ロックが必要オーバーレイは、ファイルにsvn:needs-lock
プロパティが設定されている場合を示すために使用されます。
ロック済みオーバーレイは、ローカルワーキングコピーがそのファイルのロックを保持している場合に使用されます。
無視オーバーレイは、グローバル無視パターンまたは親フォルダのsvn:ignore
プロパティのいずれかによって、ignored
状態のアイテムを表すために使用されます。このオーバーレイはオプションです。
バージョン管理外オーバーレイは、unversioned
状態のアイテムを表すために使用されます。これは、バージョン管理されたフォルダ内のアイテムですが、それ自体はバージョン管理下にはありません。このオーバーレイはオプションです。
アイテムのSubversionステータスがnone
(アイテムがワーキングコピー内にない)場合、オーバーレイは表示されません。無視およびバージョン管理外オーバーレイを無効にすることを選択した場合、これらのファイルに対してもオーバーレイは表示されません。
アイテムは1つのSubversionステータス値しか持つことができません。たとえば、ファイルがローカルで変更され、同時に削除対象としてマークされる場合があります。Subversionは単一のステータス値を返します - この場合はdeleted
です。これらの優先順位はSubversion自体の中で定義されています。
TortoiseSVNがステータスを再帰的に表示する場合(デフォルト設定)、各フォルダは自身のステータスとすべての子のステータスを反映するオーバーレイを表示します。単一の要約オーバーレイを表示するために、上記の優先順位を使用して、どのオーバーレイを使用するかを決定し、競合オーバーレイが最高の優先順位を持ちます。
実際には、これらのアイコンのすべてがシステムで使用されているわけではないことに気付くかもしれません。これは、Windowsで許可されるオーバーレイの数が15に制限されているためです。Windowsはそのうち4つを使用し、残りの11は他のアプリケーションで使用できます。十分なオーバーレイ スロットが利用できない場合、TortoiseSVNは良き市民(TM)であろうとし、他のアプリに機会を与えるためにオーバーレイの使用を制限します。
他のバージョン管理システムで使用できるTortoiseクライアントがあるため、オーバーレイアイコンの表示を担当する共有コンポーネントを作成しました。技術的な詳細はここでは重要ではありません。知っておくべきことは、この共有コンポーネントにより、すべてのTortoiseクライアントが同じオーバーレイを使用できるようになり、したがって、複数のTortoiseクライアントをインストールしても、利用可能な11のスロットの制限が使い果たされないことです。もちろん、小さな欠点が1つあります。すべてのTortoiseクライアントが同じオーバーレイアイコンを使用するため、オーバーレイアイコンによってワーキングコピーがどのバージョン管理システムを使用しているかを判断することはできません。
通常、変更、および競合は常にロードされ、表示されます。
削除は可能な場合はロードされますが、十分なスロットがない場合は変更にフォールバックします。
読み取り専用は可能な場合はロードされますが、十分なスロットがない場合は通常にフォールバックします。
ロック済みは可能な場合はロードされますが、十分なスロットがない場合は通常にフォールバックします。
追加は可能な場合はロードされますが、十分なスロットがない場合は変更にフォールバックします。