プロジェクト開発における最も一般的な要求の1つは、何が変更されたかを確認することです。同じファイルの2つのリビジョン間の差分、または2つの別々のファイル間の差分を確認したい場合があります。TortoiseSVNには、テキストファイルの差分を表示するためのTortoiseMergeという組み込みツールが用意されています。画像ファイルの差分を表示するために、TortoiseSVNにはTortoiseIDiffというツールもあります。もちろん、必要に応じてお気に入りの差分プログラムを使用することもできます。
ワーキングコピーで行った変更を自分で確認したい場合は、エクスプローラーのコンテキストメニューを使用して、 → を選択するだけです。
(ブランチで作業している場合)トランク、または(トランクで作業している場合)特定のブランチで何が変更されたかを確認したい場合は、エクスプローラーのコンテキストメニューを使用できます。ファイル上で右クリックしながらShiftキーを押したままにします。次に、 → を選択します。次のダイアログで、ローカルファイルを比較したいリポジトリ内のURLを指定します。
リポジトリブラウザを使用して2つのツリーを選択して差分をとることもできます。たとえば、2つのタグ、またはブランチ/タグとトランクです。そこのコンテキストメニューを使用すると、「フォルダの比較」セクションを参照してください。
を使用してそれらを比較できます。詳細については、特定のリビジョンとワーキングコピーの差分を確認したい場合は、リビジョンログダイアログを使用し、目的のリビジョンを選択してから、コンテキストメニューから
を選択します。ワーキングコピーが変更されていないと仮定して、最後にコミットされたリビジョンとワーキングコピーの差分を確認したい場合は、ファイルを右クリックするだけです。次に、
→ を選択します。これにより、(ワーキングコピーに記録されている)最終コミット日より前のリビジョンとワーキングベースの間で差分が実行されます。これは、ワーキングコピーで現在表示されている状態にするために、そのファイルに加えられた最後の変更を示しています。ワーキングコピーよりも新しい変更は表示されません。すでにコミットされている2つのリビジョン間の差分を確認したい場合は、リビジョンログダイアログを使用し、(通常のCtrl修飾キーを使用して)比較したい2つのリビジョンを選択します。次に、コンテキストメニューから を選択します。
フォルダのリビジョンログからこれを行った場合、「リビジョンの比較」ダイアログが表示され、そのフォルダ内の変更されたファイルのリストが表示されます。詳細については、「フォルダの比較」セクションを参照してください。
特定のリビジョン内のすべてのファイルに加えられた変更を1つのビューで確認したい場合は、Unified-Diff出力(GNUパッチ形式)を使用できます。これは、コンテキストの数行のみを含む差分のみを表示します。視覚的なファイル比較よりも読みにくいですが、すべての変更をまとめて表示します。リビジョンログダイアログから、目的のリビジョンを選択し、コンテキストメニューから
を選択します。2つの異なるファイル間の差分を確認したい場合は、(通常のCtrl修飾キーを使用して)両方のファイルを選択することにより、エクスプローラーで直接実行できます。次に、エクスプローラーのコンテキストメニューから → を選択します。
比較するファイルが同じフォルダにない場合は、Ctrl修飾キーを押したままにします。
→ コマンドを使用して、最初のファイルを差分対象としてマークし、次に2番目のファイルを参照して、 → を使用します。マークされたファイルを削除するには、 → コマンドを再度使用しますが、クリックするときにワーキングコピー内のファイルと任意のリポジトリ内のファイルの差分を確認したい場合は、ファイルを選択し、Shiftキーを押しながら右クリックしてコンテキストメニューを表示することにより、エクスプローラーで直接実行できます。 → を選択します。ワーキングコピーフォルダでも同じことができます。TortoiseMergeは、これらの差分をパッチファイルと同じ方法で表示します。つまり、一度に1つずつ表示できる変更されたファイルのリストです。
差分だけでなく、変更が行われた作成者、リビジョン、および日付も確認したい場合は、リビジョンログダイアログ内から差分レポートとblameレポートを組み合わせることができます。詳細については、「Blame Differences」セクションをお読みください。
TortoiseSVNに付属の組み込みツールは、ディレクトリ階層間の差分表示をサポートしていません。ただし、その機能をサポートする外部ツールがある場合は、代わりにそれを使用できます。「外部差分/マージツール」セクションでは、私たちが使用したいくつかのツールについて説明します。
サードパーティの差分ツールを設定している場合は、別のツールを使用するために[Diff]コマンドを選択するときにShiftを使用できます。他の差分ツールの設定については、「外部プログラム設定」セクションをお読みください。
プロジェクトのライフサイクル中に、改行コードをCRLF
からLF
に変更したり、セクションのインデントを変更したりする場合があります。残念ながら、これにより、コードの意味に変更がなくても、多数の行が変更済みとしてマークされます。ここにあるオプションは、差分を比較および適用する際に、これらの変更を管理するのに役立ちます。これらの設定は、マージダイアログとBlameダイアログ、およびTortoiseMergeの設定に表示されます。
改行コードを無視すると、改行コードスタイルの違いのみによる変更が除外されます。
空白を比較すると、インデントとインライン空白のすべての変更が、追加/削除された行として含まれます。
空白の変更を無視すると、空白の量またはタイプの変更のみによる変更が除外されます。たとえば、インデントの変更やタブからスペースへの変更などです。以前に空白がなかった場所への空白の追加、または空白の完全な削除は、依然として変更として表示されます。
すべての空白を無視すると、空白のみの変更がすべて除外されます。
当然ながら、内容が変更された行は常に差分に含まれます。
リポジトリブラウザ内で2つのツリーを選択するか、ログダイアログでフォルダの2つのリビジョンを選択すると、 → を実行できます。
このダイアログには、変更されたすべてのファイルのリストが表示され、コンテキストメニューを使用して個別に比較またはblameを実行できます。
変更ツリーをエクスポートできます。これは、プロジェクトツリー構造を他の人に送信する必要がある場合に便利ですが、変更されたファイルのみが含まれています。この操作は、選択したファイルでのみ機能するため、関心のあるファイル(通常はすべて)を選択してから、 → を選択する必要があります。変更ツリーを保存する場所を求められます。
変更されたファイルのリストをテキストファイルにエクスポートすることもできます。これを行うには、 → を使用します。
ファイルのリストとアクション(変更、追加、削除)もエクスポートする場合は、 → を使用して実行できます。
上部のボタンを使用すると、比較の方向を変更できます。AからBへの変更を表示したり、必要に応じてBからAへの変更を表示したりできます。
リビジョン番号が付いたボタンを使用して、別のリビジョン範囲に変更できます。範囲を変更すると、2つのリビジョン間で異なるアイテムのリストが自動的に更新されます。
ファイル名のリストが非常に長い場合は、検索ボックスを使用して、リストを特定のテキストを含むファイル名に絞り込むことができます。単純なテキスト検索が使用されることに注意してください。したがって、リストをCソースファイルに制限する場合は、*.c
ではなく.c
と入力する必要があります。
テキストファイルの差分をとるためのツールは数多くありますが、私たち自身のTortoiseMergeを含め、画像ファイルがどのように変更されたかを確認したい場合もよくあります。それが、TortoiseIDiffを作成した理由です。
一般的な画像ファイル形式の → を実行すると、TortoiseIDiffが起動して画像の差分が表示されます。デフォルトでは、画像は左右に並べて表示されますが、[表示]メニューまたはツールバーを使用して、代わりに上下表示に切り替えたり、必要に応じて画像を重ねてライトボックスを使用しているように見せかけることもできます。
当然ながら、画像のズームイン/ズームアウトやパンも可能です。画像を左ドラッグするだけでパンすることもできます。画像をリンクオプションを選択すると、両方の画像のパンコントロール(スクロールバー、マウスホイール)がリンクされます。
画像情報ボックスには、ピクセル単位のサイズ、解像度、色深度など、画像ファイルに関する詳細が表示されます。このボックスが邪魔になる場合は、
→ を使用して非表示にします。マウスを画像タイトルバーに合わせると、ツールチップで同じ情報を取得できます。画像が重ね合わされている場合、画像の相対的な強度(アルファブレンド)は、左側のスライダーコントロールによって制御されます。スライダーの任意の場所をクリックしてブレンドを直接設定することも、スライダーをドラッグしてブレンドをインタラクティブに変更することもできます。Ctrl+Shift-ホイールでブレンドを変更します。
スライダーの上にあるボタンは、0%と100%のブレンドを切り替えます。ボタンをダブルクリックすると、再度ボタンをクリックするまで、ブレンドが1秒ごとに自動的に切り替わります。これは、複数の小さな変更を探す場合に役立ちます。
ブレンドではなく差分を確認したい場合があります。プリント基板の2つのリビジョンの画像ファイルがあり、どのトラックが変更されたかを確認したい場合があります。アルファブレンドモードを無効にすると、差分はピクセルカラー値のXORとして表示されます。変更されていない領域は無地の白になり、変更された領域は色付きになります。
テキスト以外のドキュメントを差分処理する場合は、通常、ドキュメントを作成するために使用されたソフトウェアを使用する必要があります。これは、ソフトウェアがファイル形式を理解しているためです。一般的に使用されるMicrosoft OfficeおよびOpen Officeスイートの場合、実際には差分表示のサポートがあり、TortoiseSVNには、既知のファイル拡張子を持つファイルを差分処理するときに適切な設定でこれらを呼び出すスクリプトが含まれています。サポートされているファイル拡張子を確認し、独自のファイル拡張子を追加するには、外部プログラムセクションの をクリックします。
→ に移動し、Office 2010のクイック実行バージョンをインストールして、ドキュメントを差分処理しようとすると、Windows Script Hostから次のようなエラーメッセージが表示される場合があります。“ActiveX コンポーネントはオブジェクトを作成できません: word.Application”。差分機能を取得するには、MSIベースのOfficeバージョンを使用する必要があるようです。
私たちが提供するツールが必要なことを実行しない場合は、利用可能な多くのオープンソースまたは商用プログラムのいずれかを試してください。誰もがお気に入りのツールを持っており、このリストは決して完全ではありませんが、検討できるものをいくつか紹介します。
WinMerge は、ディレクトリも処理できる優れたオープンソースの差分ツールです。
Perforceは商用RCSですが、差分/マージツールは無料でダウンロードできます。詳細については、 Perforce を参照してください。
KDiff3は、ディレクトリも処理できる無料の差分ツールです。 こちら からダウンロードできます。
SourceGear Vaultは商用RCSですが、差分/マージツールは無料でダウンロードできます。詳細については、 SourceGear を参照してください。
ExamDiff Standardはフリーウェアです。ファイルは処理できますが、ディレクトリは処理できません。ExamDiff Proはシェアウェアであり、ディレクトリの差分や編集機能など、多くの優れた機能が追加されています。どちらのバージョンでも、バージョン3.2以降はUnicodeを処理できます。 PrestoSoft からダウンロードできます。
ExamDiff Proと同様に、これはディレクトリの差分とUnicodeを処理できる優れたシェアウェアの差分ツールです。 Scooter Software からダウンロードできます。
Araxis Mergeは、ファイルとフォルダの両方の差分とマージに役立つ商用ツールです。マージで3方向比較を行い、関数の順序を変更した場合に使用する同期リンクがあります。 Araxis からダウンロードできます。
これらのツールを使用するようにTortoiseSVNを設定する方法については、「外部プログラム設定」セクションをお読みください。