リビジョングラフ

図4.47 リビジョングラフ

リビジョングラフ


時にはブランチやタグがトランクのどこから分かれたのか知る必要があります。この種の情報を見るのに理想的なのは、グラフやツリー構造で見ることです。この必要があるときには、TortoiseSVNリビジョングラフ... としてください。

このコマンドは、リビジョンの履歴を解析し、どのポイントからコピーを取得したか、いつブランチ・タグを削除したかを表示するツリーを作成しようとします。

重要

TortoiseSVN がグラフを生成するには、リポジトリのルートからログメッセージをすべて取得しなければなりません。言うまでもなく、数千リビジョンのリポジトリがある場合 (サーバの速度やネットワークの帯域などににもよりますが) 数分かかるでしょう。現在 500,000 リビジョンを越えている Apache プロジェクトのようなところで試せば、しばらく待っていなければなりません。

朗報としては、ログキャッシュを使用している場合は、一度この遅さを我慢すればいいということです。これ以後は、ローカルにログデータを保持しています。ログキャッシュは TortoiseSVN 設定で有効にできます。

リビジョングラフのノード

各リビジョングラフのノードは、あなたが見ているツリーの、何か変更されたリポジトリのリビジョンを表しています。形や色でノードの違いを区別できます。形は固定ですが、色は TortoiseSVN設定 を使用して設定できます。

追加・コピーした項目

追加された項目や、別のファイル・フォルダをコピーして作成されたものを、角の丸い長方形で表します。デフォルトの色は緑です。タグやブランチは特殊な状態として扱い、TortoiseSVN設定 によって異なる影を用います。

削除した項目

必要のなくなったブランチなど削除された項目は、八角形 (角を落とした矩形) で表します。デフォルト色は赤です。

名前を変更した項目

名前変更した項目は、八角形でも表します。デフォルトの色は青です。

ブランチティップリビジョン

グラフは通常表示しているブランチポイントに制限されていますが、各リビジョンの、個々の最新 (HEAD) リビジョンも表示できるとしばしば便利です。最新のリビジョンを表示する を選択すると、各最新リビジョンノードが楕円で表示されます。ここで言う最新 (HEAD) は、そのパスでコミットした最終リビジョンを指し、リポジトリの HEAD リビジョンではないことにご注意ください。

作業コピーリビジョン

作業コピーのリビジョングラフを呼び出すと、作業コピーのリビジョンを表示する を用いてグラフの BASE リビジョンを表示できます。このとき、BASE ノードは太い輪郭で表します。

変更した作業コピー

作業コピーのリビジョングラフを呼び出すと、Show WC modifications を用いて、変更された作業コピーを表す追加ノードを表示できます。これは輪郭が太い楕円のノードで、デフォルトでは赤で表します。

通常の項目

他の項目は、通常の矩形で表します。

デフォルトでグラフには、項目の追加・コピー・削除のみ表示することにご注意ください。プロジェクト内のすべてのリビジョンを表示すると、重要なものだけでも非常に大きいグラフを生成してしまいます。本当に、変更が行われたすべてのリビジョンが必要なら、表示 メニューやツールバーに、このようにするオプションがあります。

デフォルトの表示 (グループ化無効) では、ノードを縦方向に、厳密なリビジョン順で配置するため、実行された順番の、視覚的な手がかりがあります。同じ列にあるふたつのノードの順番は明白です。ふたつのノードが隣接する列にある場合、ノードが重なる心配がないため、補正は少なくて済みます。そしてそのため、少々明白でない場合があります。そのような最適化が、複雑なグラフを妥当な大きさにしておくために必要です。この順序づけでは、古い方にあるノードの (つまり、グラフを古いノードを下に表示する場合は、ノードの下端) を、参照として使用することにご注意ください。ノードの形がすべて同じ大きさであるわけではないため、参照する端は重要です。

表示の変更

リビジョングラフは非常に複雑になることがありますので、お好みの表示にできるようにいくつもの機能があります。ツールバーの 表示 メニューから使用できます。

分岐をグループ化

デフォルトの振る舞い (グループ化無効) では、すべての行をリビジョンごとに厳密に並べ替えます。その結果、長生きなブランチは、変更が少ないにもかかわらず大量の列を占有し、グラフが非常に広くなってしまいます。

このモードは変更をブランチでグループ化するため、グローバルなリビジョン順はありません。ブランチ上の連続したリビジョンは、連続した線で (大抵) 表します。しかしサブブランチの場合、グラフをスリムにしておくため、古いブランチと同じ列に後から発生したブランチを配置するようにします。その結果、異なるリビジョン由来の変更を同じ行に含む可能性があります。

古いものを先頭に表示する

通常、グラフは古いものを下に配置し、上の方に伸びていきます。このオプションにより、上から下に伸びていくようになります。

トップでツリーをそろえる

グラフが、いくつかのツリーにばらばらにされた場合、ブランチでグループ化する オプションを使用しているかによって、そのツリーは自然なリビジョン順か、ウィンドウの下部に整列して現れるでしょう。すべてのツリーを上部から下部へのばすには、このオプションを使用してください。

線が交差しないようにする

グラフのレイアウト上で、線の交差が大量に発生した場合、このオプションで整理してください。これによりレイアウトの列はあまり論理的でない場所に配置する可能性があります (例: 列でなく対角線)。また、描画するのに大きな領域が必要です。

パス名で差分をとる

長いパス名はたくさんのスペースを取ってしまい、ノードボックスを非常に大きくしてしまいます。パスの変更された部分のみを表示し、共通部分を点に置換する場合、このオプションを使用してください。つまり、/trunk/doc/html から ブランチ /branches/1.2.x/doc/html を作成した場合、/branches/1.2.x/.. という短縮形で表示します。最後のふたつの階層 (dochtml) が変更されていないからです。

すべてのリビジョンを表示する

予想通り、(グラフ化したツリーの) 変更されたすべてのリビジョンを表示します。履歴が長いと、非常に大きなグラフになります。

最新のリビジョンを表示

これにより、各ブランチの最新リビジョンが、グラフ上に常に現れることを保証します。

正確なコピー元の表示

ブランチ・タグが作成された際、デフォルトの挙動では、変更があった最後のノードからのブランチとして表示します。ブランチは特定のリビジョンからよりも、その時の最新 (HEAD) から作成されますので、厳密に言うと正しくありません。そこで、コピーを作成したリビジョンを使用して、より正しい (しかしあまり有用でない) 表示を行えます。このリビジョンが、ソースブランチの HEAD リビジョンよりも小さい可能性があることにご注意ください。

タグを折りたたむ

プロジェクトにタグがたくさんある場合、すべてのタグをグラフの独立したノードとして表示するため、多くの領域を消費し、興味深い開発ブランチ構造が目立たなくなってしまいます。同時に、リビジョンを比較するため、タグの内容に簡単にアクセスする必要があるかもしれません。このオプションは、タグのノードを非表示にし、コピーしたノードにツールチップで表示するようにします。タグが作成された場合、元のノードの右側にタグアイコンを表示します。

削除されたパスは表示しない

リポジトリの HEAD (最新) リビジョンに、すでにもうないパス (削除されたブランチなど) を隠します。

未変更のブランチを隠す

それぞれのファイルやサブフォルダに対して、変更をコミットしていないブランチを隠します。これは必ずしも、そのブランチが使われなかったことを表すわけではありません。ただ、この部分では変更されていないことを表します。

作業コピーのリビジョン表示

グラフ用に取得した項目の更新リビジョンに一致する、グラフのリビジョンをマークします。更新したばかりの時は、HEAD (最新) になるでしょうが、最後に更新してから、別の人がコミットしていると、作業コピーのリビジョンは若干古くなります。ノードは太い輪郭線でマークされます。

作業コピーの変更表示

作業コピーにローカルな変更がある場合、このオプションはその変更を分かれた楕円のノードとして描画し、作業コピーの最終更新リビジョンの後ろに接続します。デフォルトの輪郭色は赤です。最新の変更を取得するため、F5 を押してグラフを再表示する必要があります。

フィルタ

リビジョングラフは、時に必要以上に大量のリビジョンを含んでしまいます。このオプションではダイアログを表示し、表示するリビジョン範囲を制限したり、特定のパスを非表示にしたりといったことができます。

ツリーストライプ

複数のツリーを含むグラフでは、それぞれのツリーを識別するのに、交互に背景色が付いていると便利です。

概要表示

現在の表示ウィンドウをドラッグできる矩形で表した、グラフ全体の小さな画像を表示します。これによりグラフをもっと簡単にナビゲートできます。非常に大きいグラフの場合、極端な縮小のため役に立たない可能性があります。その場合表示されないことにご注意ください。

グラフの利用

大きなリビジョングラフを参照するのに、外観ウィンドウを使用してください。小さなウィンドウに、図の全体を表示し、現在の表示範囲を強調しています。強調範囲をドラッグすると、表示領域が変化します。

リビジョンの日付、作者。コメントは、マウスをリビジョンボックスの上にかざしたときに出るヒントボックスに表示します。

2 つのリビジョンを選択 (Ctrl-左クリック) すると、そのリビジョン間の差分を表示するコンテキストメニューを利用できます。ブランチ作成ポイントで差分を表示できますが、通常ブランチ終了ポイント (つまり HEAD リビジョン) について表示したいことでしょう。

差分を Unified-Diff ファイル (最小の文脈で全差分を 1 ファイルにまとめたもの) で見られます。コンテキストメニューリビジョンを比較 を選択すると、変更したファイルの一覧が表示されます。ファイル名を ダブルクリック すると両リビジョンを取得し、視覚差分ツールで比較します。

リビジョン上で 右クリック すると、履歴を表示するのに コンテキストメニューログ表示 を使用できます。

別の作業コピーにある、選択したリビジョンの変更もマージできます。フォルダ選択ダイアログにより、マージ結果を格納する作業コピーを選択できますが、確認ダイアログはなく、また動作チェックもできません。変更していない作業コピーを用い、選択したリビジョンをマージするのに失敗したら、変更を取り消すのがうまい方法です! これはあるブランチから別のブランチへ、選択したリビジョンをマージするのに便利です。

リビジョングラフの読み方

初めて見たユーザは、ユーザのメンタルモデルと異なるリビジョングラフに驚くかもしれません。例えばリビジョンが、ファイルやフォルダに対して、複数のコピーやブランチを変更すると、ひとつのリビジョンから複数のノードが生成されます。ツールバーの左端から初めて、ひとつひとつメンタルモデルと合うまで、グラフをカスタマイズするのもいい実践法です。

フィルタオプションはすべて、可能な限り情報を少しも失わないように試みます。それにより、例えばいくつかのノードは色が変わる可能性があります。予期しない結果となった場合は、常に最後に行ったフィルタを取り消し、特定のリビジョンやブランチに対して何が特別であったのか、理解するように努めてください。多くの場合、はじめに予想したフィルタ操作の結果は、的確でないか誤解しています。

表示の更新

新しい情報を取得するためサーバを再チェックする場合、単純に F5 で表示を更新できます。ログキャッシュを使用する場合 (デフォルトで有効)、新しいログメッセージがあるかリポジトリをチェックし、新しいもののみを取得します。ログキャッシュがオフラインモードだった場合、オンラインモードにしようともします。

ログキャッシュを使用しており、メッセージの内容や作者を変更しようとする場合、必要なメッセージを再読込するのにログダイアログを使用するべきです。リビジョングラフはリポジトリのルートから動作しますので、ログキャッシュ全体を無効にせねばならず、キャッシュにためるのに非常に長い時間がかかります。

ツリーの剪定

大きなツリーはナビゲートしにくい場合があり、一部を隠したり、小さなツリー群に分割したりしたくなると思います。ノードに出入りするノードリンクの点の上にマウスを移動すると、このための複数のポップアップボタンを目にすることになります。

付随するサブツリーを折りたたむには、-ボタンをクリックしてください。

折りたたまれたツリーを展開するには、+ボタンをクリックしてください。ツリーが折りたたまれている場合、隠されたサブツリーを表すため、表示したままとなります。

×ボタンをクリックすると、取り付けたサブツリーを分割し、独立したツリーとしてグラフに表示します。

○ボタンを押すと、分割したツリーを再度取り付けます。ツリーが遠いところで分割された際には、分割したサブツリーがあることを示すため、このボタンを表示したままとなります。

グラフの背景をクリックすると、すべて展開すべて連結する を提供する、メインコンテキストメニューを表示します。折りたたんだり分割したブランチがなければ、コンテキストメニューを表示しません