差分の参照

プロジェクト開発を進める上でもっとも共通な需要のひとつに、どのように変更したかを確認するということがあります。同じファイルの2つのリビジョン間や、2つの別のファイルの違いを確認したくなるはずです。TortoiseSVN には、テキストファイルの差分を表示する TortoiseMerge という内蔵ツールがあり、画像ファイルの差分を見るのに TortoiseIDiff というツールもあります。もちろん、お好みの差分プログラムを使うこともできます。

ファイルの差分

手元の変更

作業コピー内の あなた がどんな変更を行ったか確認したければ、エクスプローラのコンテキストメニューでTortoiseSVN差分 を選択してください。

別のブランチ・タグとの差分

(ブランチで作業していて) トランクの変更点を見たい場合や、(トランクで作業していて) 指定したブランチの変更点を見たい場合、エクスプローラのコンテキストメニューを利用できます。Shift キーを押したままファイルを右クリックし、TortoiseSVNURL と差分 を選択してください。続くダイアログでは、ローカルファイルと比較するリポジトリの URL を指定してください。

2つのツリー、おそらく2つのタグや、ブランチ・タグとトランクを選択して diff を取るのに、リポジトリブラウザも利用できます。そこでのコンテキストメニューには、リビジョンの比較 があり、これで比較できます。「フォルダの比較」 をご覧ください。

以前のリビジョンからの差分

特定のリビジョンと作業コピーの差分を取るのなら、リビジョンログダイアログを使用してください。関心のあるリビジョンを選択し、コンテキストメニューから 作業コピーと比較 を選択してください。

最後にコミットしたリビジョンと、変更されていないと見なせる自分の作業コピーとの差分を見る場合、単にファイルを右クリックし、TortoiseSVN以前のバージョンと差分 を選択してください。ここでは、(作業コピーに記録されている) 最後にコミットした日時と、作業中の BASE との diff を実行します。これにより、現在の作業コピーにある状態に持っていった最後の変更点を参照できます。作業コピーにあるものよりも新しい変更点は表示されないでしょう。

2 つのリビジョン間の差分

すでにコミットした 2 つのリビジョン間の差分を取るのなら、リビジョンログダイアログを使用し、比較したい 2 つのリビジョンを選択して (通常 Ctrl を使用して) ください。それから、コンテキストメニューから リビジョンを比較 を選択してください。

フォルダのリビジョンログから行った場合、リビジョン比較ダイアログが現れ、フォルダにある変更されたファイルの一覧を表示します。「フォルダの比較」 をご覧ください。

コミットしたすべての変更

特定のリビジョンで行った、すべてのファイルの変更点を一目で確認したいなら、Unified-Diff 出力 (GNU patch 形式) を使用できます。これには文脈内の数行の変更点しかありません。視覚的なファイル比較よりも読むのが大変ですが、すべての変更を一度に確認できます。リビジョンログダイアログから確認したいリビジョンを選択し、コンテキストメニューから Show Differences as Unified-Diff を選択してください。

ファイル間の差分

2 つの異なるファイルの差分を確認したい場合、エクスプローラで直接両方 (Ctrl を押しながら) 選択してください。その後、エクスプローラのコンテキストメニューからTortoiseSVN差分 を選択します。

作業コピーのファイル・フォルダと URL 間の差分

作業コピーの 2 つの異なるファイルや、Subversion リポジトリにあるファイルの差分を確認する場合、エクスプローラで直接両方選択してください。その後、Shift キーを押しながら右クリックし、コンテキストメニューを表示してください。TortoiseSVNURL と差分 を選択してください。作業コピーのフォルダについても同じことです。TortoiseMerge はパッチファイルと同様に (それぞれを見られる、変更のあったファイルの一覧として) 差分を表示します。

注釈履歴の差分

差分だけでなく、作者・リビジョン・変更日時を見たい場合、リビジョンログダイアログより差分と注釈履歴を組み合わせることで行えます。詳細は、「注釈履歴の差分」 をご覧ください。

フォルダ間の差分

TortoiseSVN の内蔵ツールは、ディレクトリ階層の比較をサポートしていません。しかし、その機能をサポートしている外部ツールを使えばディレクトリの比較を行えます。「外部 Diff/Merge ツール」 で利用できるツールをご紹介します。

サードパーティの diff ツールを設定している場合、差分コマンドを選択する際にShift を押して代替ツールを使用できます。その他の diff ツールの設定については、「外部プログラムの設定」 をご覧ください。

改行コードと空白のオプション

プロジェクトを続けていくと、時には改行コードを CRLF から LF に変更したり、セクションのインデントを変更したりすることがあります。不幸なことに、かなりの行を変更しなければなりませんが、コードの意味には変更はありません。以下のオプションでは、比較や差分適用の際の変更点のとり方を管理します。この設定は、マージ ダイアログや 注釈履歴 ダイアログに対して、TortoiseMerge の設定と同様に作用します。

改行コードを無視する 改行コードしか差異のない変更は無視します。

空白を比較する インデントや行内の空白の追加・削除を変更点に含みます。

空白の変更を無視する 空白の数や種類しか差異のない変更は無視します。例: インデントの変更やタブからスペースへの変更など。以前何も無かった箇所への空白の追加や、空白の削除は、変更として表示します。

すべて空白を無視する 空白のみの変更をすべて無視します。

当然、内容の変更のある行は、常に差分に含めます。

フォルダの比較

図4.24 リビジョンの比較ダイアログ

リビジョンの比較ダイアログ


リポジトリブラウザにある 2 つのツリーを選択したり、ログダイアログにあるフォルダのの 2 つのリビジョンを選択すると、コンテキストメニューリビジョンを比較 を行えます。

このダイアログは、変更されたすべてのファイルを表示し、コンテキストメニューから個々に比較・注釈履歴取得を行えます。

変更したツリー をエクスポートできます。これは、他の誰かがプロジェクトのツリー構造を必要しているけれども、変更したファイルのみ必要としている場合に便利です。この操作は変更したファイルにのみ有効ですので、興味のあるファイル (たいていすべて) を選択する必要があります。その後、コンテキストメニュー選択をエクスポート... としてください。変更したツリーを保存する場所を指定することになります。

また、コンテキストメニュー選択ファイルのリストを保存... として、変更したファイルのリストもエクスポートできます。

ファイルの一覧 操作 (変更・追加・削除) をエクスポートする場合、コンテキストメニュー選択範囲をクリップボードにコピー を用いて行えます。

最上部のボタンは、比較の方向を変更します。AからBへの変更点を表示でき、希望によりBからAにでも表示できます。

リビジョン番号があるボタンは、リビジョン範囲を変えるのに使用できます。範囲を変える際、2 つのリビジョン間の差異に自動で更新します。

ファイル名の一覧が非常に長い場合、検索ボックスを使用して、特定のテキストを含むファイル名のみを抽出できます。シンプルなテキスト検索を行いますので、C のソースファイルを指定したい場合は、*.c ではなく .c としてください。

TortoiseIDiff を使用した画像の差分

テキストファイルの差分を取るツールは (TortoiseMerge を含め) たくさんありますが、画像ファイルにどんな変更が加えられたかを知るツールも欲していました。ですから TortoiseIDiff を作りました。

図4.25 画像差分ビューア

画像差分ビューア


いずれかのよくある画像フォーマットで TortoiseSVNDiffとすると、画像の差分を取る TortoiseIDiff を起動します。デフォルトでは画像を横に並べて表示しますが、表示メニューやツールバーで上下に表示したり、お好みなら画像を重ねて表示し、ライトボックスを使っているかのように見せかけることもできます。

当然、画像をズームイン・ズームアウトしたり、平行移動もできます。単に左ドラッグでも、イメージを平行移動できます。Link images together オプションを選択しておくと、視点変更コントロール (スクロールバー、マウスホイール) は両方の画像をリンクして動かします。

画像情報ボックスには、ピクセル単位のサイズや、解像度、色深度など、画像ファイルの詳細を表示します。このボックスが邪魔になるなら、表示画像情報 で隠すことができます。これと同じ情報は、画像タイトルバーの上にマウスを持っていくと表示されます。

イメージをオーバーレイしている場合、上部のスライダで、画像の相対的な輝度 (アルファブレンディング) を制御できます。スライダ上のクリックした箇所で透明度を直接制御できますし、スライダをドラッグしてインタラクティブに透明度を変更できます。Ctrl+Shift-ホイール でも透明度を変更できます。

スライダの上にあるボタンで透明度を 0% と 100% で切り替えられます。また、ボタンをダブルクリックすると、もう一度ボタンをクリックするまで、秒ごとに透明度を自動で交互に切り替えます。複数の小さな変更を見るのに便利でしょう。

ブレンディングではなく差分を確認したい場合もあります。各リビジョンにプリント基板の画像イメージがあり、どのトラックが変更されたかを見たい場合などです。アルファブレンディングモードを無効にすると、各ピクセルの色を XOR して差分を表示します。変更のない部分は真っ白になり、変更点だけ色がつきます。

外部 Diff/Merge ツール

私たちが提供するツールがニーズに合わなかったら、たくさんあるオープンソース・商用のツールの中から、利用できるものを試してみてください。みんなそれぞれいいところがありますし、この一覧は完全なものではありません。が、検討するかもしれないものを以下に挙げます。

WinMerge

WinMerge は、ディレクトリも扱えるすばらしいオープンソース差分ツールです。

Perforce Merge

Perforce は商用の RCS ですが、差分・マージツールは無料でダウンロードできます。詳細な情報は Perforce から取得してください。

KDiff3

KDiff3 は、ディレクトリを扱えるフリーの diff ツールです。こちらからダウンロードできます。

ExamDiff

ExamDiff Standard はフリーウェアです。ファイルを扱えますが、ディレクトリは扱えません。ExamDiff Pro はシェアウェアでディレクトリに対する diff/編集機能などたくさん追加されています。どちらもバージョン 3.2 以降なら unicode を扱えます。PrestoSoft からダウンロードできます。

Beyond Compare

ExamDiff Pro に似て、ディレクトリの diff と unicode を扱えるすばらしいシェアウェアです。Scooter Software からダウンロードしてください。

Araxis Merge

Araxis Merge はファイルやフォルダの両方に対応した、diff/マージ用に便利な商用ツールです。マージ時に 3 方向の比較を行い、関数の順番を変更した場合に使用する同期リンクを持っています。Araxis からダウンロードしてください。

SciTE

このテキストエディタには unified diff の文法に色が付いていて、読みやすくなっています。Scintilla からダウンロードしてください。

Notepad2

Notepad2 は Windows 標準のメモ帳プログラムを置き換えるように設計されていて、Scintilla のオープンソースエディットコントロールを基にしています。unified diff を見るのによいのと同様、ほとんどの作業で Windows のメモ帳よりも便利です。こちらから自由にダウンロードしてください。

以上のツールを使用するよう TortoiseSVN をセットアップするには 「外部プログラムの設定」 をご覧ください。