リビジョングラフ

図4.64 リビジョングラフ

リビジョングラフ


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

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

重要

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

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

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

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

追加・コピーした項目

追加されたり、他のファイルやフォルダーによって作られたりした項目は、長方形で囲んで表示されます。デフォルトの色は緑色です。タグやトランクでは特別なものとして扱われ、異なる色で表示されます。これは TortoiseSVN設定 で設定することができます。

削除した項目

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

名前を変更した項目

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

ブランチの最新リビジョン

グラフには通常、分岐したリビジョンしか表示されませんが、それぞれのブランチの最新版である HEAD リビジョンも確認できると便利です。 HEADリビジョンを表示する を選択すると、各ブランチの HEAD リビジョンのノードが楕円で表示されます。ここで言う HEAD リビジョンとは、そのパスでコミットした最終リビジョンであり、リポジトリ全体の HEAD リビジョンではないことにご注意ください。

作業コピーのリビジョン

作業コピーのリビジョングラフを表示した場合、 作業コピーのリビジョンを表示する を選択すると、作業コピーの元になった BASE リビジョンが太い輪郭で表示されます。

変更した作業コピー

作業コピーのリビジョングラフを表示させた場合、 作業コピーの変更を表示 を選択すると、変更された作業コピーを表す追加ノードを表示できます。これは輪郭が太い楕円のノードで、デフォルトでは赤で表します。

通常の項目

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

デフォルトのいグラフには、項目の追加・コピー・削除のみが表示されています。プロジェクト内のすべてのリビジョンが表示されると、重要な時に非常に巨大なグラフになってしまいます。本当に、変更が行われた すべての リビジョンが必要ならば、 表示 メニューやツールバーに、表示させるためのオプションがあります。

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

表示の変更

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

ブランチでグループ化

デフォルト(グループ化無効)では、すべての行がリビジョンの時系列になるよう厳密に配置されます。その結果、歴史が長くコミット頻度が低いブランチは、変更量の割に長く列を占有することになるため、グラフが非常に広くなってしまいます。

このモードでは変更がブランチ別に分類され、全体のリビジョン順にはなりません。ブランチ上の連続した​​リビジョンは、(通常は)連続した線で表示されます。サブブランチについても同様に配置されますが、グラフを小さく収めるために、古いブランチと同じ列に後から発生したのブランチが配置されるようになっています。そのため、異なるリビジョンが同じ行に表示されることがあります。

古いものを先頭に表示

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

ツリーを上端でそろえる

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

線の交差を避ける

このオプションは通常は有効になっており、グラフの線が交差して混乱しないように表示されます。しかし、これは列が論理的でない場所に配置される可能性もあります。たとえば、列よりも大きい斜線があると、グラフの描画に必要な領域が多くなってしまいます。これが問題になる場合には、表示メニューからオプションを無効にすることができます。

パス名を差分で表示

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

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

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

最新リビジョン(HEAD)を表示

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

正確なコピー元

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

タグを折りたたむ

プロジェクトに多くのタグがある場合、それぞれのタグがグラフ上で独立したノードとして表示されるため、開発にとってより重要なブランチの構造が読み取りにくくなります。一方、リビジョン間で比較を行う場合は、タグの内容に簡単にアクセスできる必要があります。このオプションは、タグのノードを非表示にする代わりに、コピー元のノード上にツールチップとして表示するようにします。コピー元のノードの右側にタグアイコンがあれば、タグが作成されたことが分かります。これで、表示をとても簡素化することができます。

なお、タグからコピーが作成された場合、通常は新しいブランチがタグから作成された場合ですが、タグはまとめられずに独立したノードとして表示されます。

削除されたパスを隠す

リポジトリの HEAD リビジョンに存在していないパス(削除されたブランチなど)を非表示にします。

タグを折りたたむを選択した場合、タグの作成元になったために表示されていた削除済みのブランチは、タグと一緒に非表示になります。タグが作成された最後のリビジョンは、削除された別のリビジョンと区別するために、削除されたノードの色で表示されます。

タグを折りたたむを選択すると、タグを表示する必要がなくなったブランチは、再度非表示になります。

未使用のブランチを非表示にする

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

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

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

作業コピーの変更表示

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

フィルター

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

特定のパスを非表示にし、そのノードに子ノードがある場合、子ノードは別なツリーとして表示されます。すべての子ノードを非表示にする場合は、子階層すべてを削除チェックボックスを使用して下さい。

ツリーストライプ

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

縮小表示

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

グラフの使用

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

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

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

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

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

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

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

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

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

表示の更新

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

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

ツリーの剪定

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

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

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

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

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

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