付録F 実装の詳細

目次

アイコンオーバーレイ

この付録には TortoiseSVN の機能を実装する上での、議論の詳細が納められています。

アイコンオーバーレイ

すべてのファイルやフォルダは、Subversion ライブラリが報告する Subversion の状態値を持っています。コマンドラインクライアントでは、1 文字のコードで表示しますが、TortoiseSVN ではアイコンオーバーレイでグラフィカルに表示します。オーバーレイアイコンの数は非常に制限されているので、オーバーレイアイコンごとに複数の状態値を持つこともありえます。

競合 オーバーレイアイコンは、更新や切替の結果でローカルの変更とリポジトリからダウンロードした変更が競合した場合の、競合状態を表示するのに使用します。操作が完了できない時に陥る、妨害状態を表すときにも表示します。

修正 オーバーレイアイコンは、ローカルで変更がある修正状態や、ローカルの変更にリポジトリからの変更点をマージしたマージ状態、ファイルが削除されて、同名の異なるファイルに置き換わった 置換状態を表示するのに使用します。

削除 オーバーレイアイコンは、削除するようスケジュールした 削除状態や、見つからない 紛失状態の場合に表示されます。通常、紛失ファイルは表示できませんが、紛失ファイルがあるはずの親フォルダに表示します。

バージョン管理に 追加 されるファイルやフォルダには + 記号がつきます。

Subversion 内 オーバーレイアイコンは、通常状態のファイルや、まだ状態が分からないファイルに表示します。これは、TortoiseSVN が状態を取得するバックグラウンドプロセスを用いているためで、それはオーバーレイアイコンを更新する数秒前かもしれません。

要ロック オーバーレイアイコンは、svn:needs-lock 属性を設定しているファイルに表示されます。Subversion 1.4.0 以降で作成した作業コピー向けに、svn:needs-lock 状態は、Subversion がローカルにキャッシュし、このオーバーレイアイコンを表示するかどうか決めるにに使用します。1.4.x 以前の形式の作業コピー向けには、TortoiseSVN は読込専用ファイルにこのオーバーレイアイコンを表示します。Subversion は自動的に作業コピーをアップグレードしますが、svn:needs-lock 属性のキャッシュは、そのファイル自体の更新が発生するまで更新されません。

ローカルの作業コピーでファイルにロックされている場合、ロック オーバーレイアイコンが使われます。

無視 オーバーレイアイコンは、無視 状態の項目を、共通無視リストにあるか、親フォルダに svn:ignore 属性が設定されているかにかかわらず表すのに使用します。このオーバーレイはオプションです。

バージョン管理外 オーバーレイは、バージョン管理外 状態の項目を表すのに使用します。これはバージョン管理下にあるフォルダ内の、バージョン管理外の項目です。このオーバーレイはオプションです。

Subversion の状態が none (作業コピーにない項目) の場合はオーバーレイを表示しません。無視バージョン管理外 のオーバーレイを無効にした場合は、そのファイルにもオーバーレイを表示しません。

ファイルは Subversion 状態を 1 つしか持ちません。例えば、ファイルをローカルで変更し、そのファイルを同時に削除するようマークをつけることができます。Subversion は状態値を 1 つ返します。この場合、削除です。この優先順は、Subversion で定義しています。

TortoiseSVN が状態を再帰的に表示する (デフォルト) 際、各フォルダは、自身の状態と、そこにある全ての子ファイルの状態を反映させたオーバーレイアイコンを表示します。ひとつにまとめたオーバーレイアイコンを表示するのに、前述の優先順位を使用します。この際、もっとも優先順が高いのは、競合 状態です。

実はシステムで使用できるアイコンのすべてを見ることはありません。Windows で使用できるオーバーレイの数は 15 個に制限されているからです。Windows は 4 個使用し、残りの 11 個を他のアプリケーションで使用できるようにしています。TortoiseCVS も使用していると、使用できるオーバーレイスロットが足らなくならないように、TortoiseSVN はGood Citizen (TM) に徹し、オーバーレイを他のアプリケーションが使用できるように制限しているのです。

  • 通常変更競合 は常に読み込み・表示されます。

  • 削除 は可能ならばロードしますが、スロットが足りなければ 変更 にフォールバックします。

  • 読み取り専用 は可能ならばロードしますが、スロットが足りなければ 通常 にフォールバックします。

  • すでにロードされたオーバーレイが 13 個未満であるときのみ ロック をロードします。スロットが足りなければ 通常 にフォールバックします。

  • すでにロードされたオーバーレイが 14 個未満であるときのみ 追加 をロードします。スロットが足りなければ 変更 にフォールバックします。