Manuals

付録F 実装の詳細

目次

アイコンオーバーレイ

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

アイコンオーバーレイ

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

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

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

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

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

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

要ロックオーバーレイは、 svn:needs-lock プロパティが設定されているファイルに表示されます。

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

無視 オーバーレイアイコンは、常に無視するパターンに含まれていたり、親フォルダーに svn:ignore プロパティが設定されていたりするために 無視 状態になった項目を表すのに使用します。このオーバーレイはオプションです。

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

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

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

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

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

Tortoise クライアントには他のバージョン管理システム向けのものもあるため、オーバーレイアイコンの表示を共有するコンポーネントを作成しました。ここでは技術的な細部は重要ではありませんが、知っておいてほしいのは、共有コンポーネントによってすべての Tortoise クライアントが同じオーバーレイを使用することができ、 複数の Tortoise クライアントをインストールしたとき、オーバーレイの最大数である11個を超えずに使うことができる点です。もちろん、若干の欠点もあります。すべての Tortoise クライアントが同じオーバーレイを使用するため、作業コピーが使用しているバージョン管理システムをオーバーレイアイコンで見分けることができません。

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

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

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

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

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

TortoiseSVN homepage