ファイル比較レポートの作成

Merge には、ファイル比較からレポートを生成するいくつかの方法があります。レポートは、ファイル比較の静的表現であり、アーカイブ保管や、同僚との共有、ウェブサイトへの配置に適した形式です。

レポートの作成

ファイル比較のレポートを作成するには、レポート ツールバー ボタンをクリックします。また、ファイルレポート メニュー項目を選択するか、Shift+Cmd+E キーを押します。下に示したようなウィンドウが表示されます。

作成できるレポートの種類の一覧が、ウィンドウの最上部に沿って表示されます。レポートの種類をクリックすると、そのレポートの種類に対応する設定オプションのページが表示されます。現在選択できるレポートの種類については、? ボタンをクリックしてください。

選択したレポートの種類に応じたオプションを設定または確認し、レポートを書き出す場所を選択したら、保存… ボタンをクリックしてレポートを作成します。

レポートの種類

HTML

HTML レポートには、比較されたファイルに関する情報が含まれており、比較結果を並べて表示することができます。それらはさまざまなウェブ ブラウザーで開くことができ、同僚に電子メールで送信したり、保存したりすることができます。画面上のファイル比較の外観に影響を与えるほとんどのオプションが、レポートの生成時にも使用されます。

UNIX diff

このタイプのレポートは、一般によく使用される UNIX diff プログラムによって作成されたレポートに似ています。これは 3 者間比較ではなく 2 者間比較のみで利用できます。編集スクリプト レポート(デフォルトの diff 出力形式)、コンテキスト diff レポート(diff -c)、およびユニファイド diff レポート(diff -u)の作成が行えます。

Merge による diff スタイル レポートの出力は、UNIX のコマンドライン diff プログラムで生成されるレポートとは同一ではないことに注意してください。Merge と diff では異なるアルゴリズムを使ってファイル間の変更を判断します。多くの変更については同じように判断しますが、若干異なることがあります。

編集スクリプト形式を使う

ファイル比較のための編集スクリプト形式レポートを作成するには、このオプションを選択します。スクリプトには、第 1 ファイルを第 2 ファイルに変換するために行う必要がある手順が含まれています。

コンテキスト形式を使う

この形式では、レポートで変更、挿入または削除された行の各ブロックの周りに数行のコンテキストが付けられます。

ユニファイド形式を使う

この形式はコンテキスト レポートをさらにコンパクトにしたものです。

n 行のコンテキストを付ける

このフィールドの値は、コンテキスト形式とユニファイド形式のレポートに使用されます。

コンテキスト/ユニファイド形式のレポートは、変更されていない行が多くあるレポートで、変更、挿入および削除された行の各ブロックを囲みます。このフィールドの内容は変更されていない行がどれくらい含まれるかによって決まります。

比較されたファイルの変更箇所をわかりやすくするために、変更されていない行は視覚的なコンテキストを提供します。パッチ プログラムのいくつかは、レポートが作成されてからファイルが修正されても、その作成したレポートのコンテキスト情報を使用して 1 つのファイルをほかのファイルに変換することができます。通常、このようなプログラムが確実に機能するには、少なくとも 3 行のコンテキストを必要とします。

XML

XML レポートには、比較されたファイルに関する情報と、比較結果を並べて提示するためのデータが含まれています。画面上のファイル比較の外観に影響を与えるほとんどのオプションが、レポートの生成時にも使用されます。

このレポート タイプには、設定できるオプションがありません。XML 比較レポートを構成する要素については、以下で説明します。

XML ファイル比較レポートについて

XML 比較レポートは、ほかのアプリケーションからもさらに加工できるので便利です。以下の情報は、主に XML レポートを処理するようなソフトウェアを作成しようとしている方を対象としています。HTML 比較レポートは、同等の XML レポートで XSLT 変換を実行することによって作成されます。したがって、この 2 種類のレポートは非常に密接に関連しています。

ルート要素

XML ファイル比較レポートは、トップレベルの mg:report 要素に含まれます。

mg:report は、mg:metaDatamg:rowData の 2 つの子要素を含みます。

メタデータ

mg:metaData には、レポートが実行されたときに比較していたファイルや有効だった Merge オプションなどの、レポートに関する情報が含まれています。レポートの内容がその生成時の Merge オプションによって影響を受けることを理解することは重要です。mg:metaData の要素は次のとおりです。

要素 説明
mg:title レポートのタイトル。
mg:id レポートの ID。1 回でいくつかのレポートが作成されるとき(たとえば、ファイル比較レポートへのリンクを持ったフォルダ比較レポート)、レポートの番号として使用されます。
mg:date レポートが作成された日付。
mg:options レポートが作成されたときの主なオプションと正規表現。これらはほとんど説明を要しません。オプション名と値は、オートメーション API の概要 ドキュメント中の説明に対応しています。
mg:fileDetails この要素のインスタンスは比較されたファイルごとに存在し、ファイルの名前、タイトル(たとえば、compare コマンド ライン ユーティリティでタイトルが指定された場合)、パス、および最終更新日時を提供します。
mg:changeSummaries HTML レポートの比較の概要セクションで使用するための統計情報(Merge ファイル比較の[比較の統計情報]ウインドウにも表示される)。
mg:classes この要素のインスタンスは比較されたファイルごとに存在し、それぞれ 4 つの mg:class 子要素を含んでいます。つまり、テキスト ブロックのタイプ(変更なし、削除箇所、挿入箇所、および変更箇所)ごとに 1 つの子要素を含み、そのタイプのテキストの表示フォントと色の情報を提供します。

行データ

mg:rowData にはファイル比較実行の実際の結果が含まれます。これは、多数の mg:rowGroup 要素から構成されており、各要素は、あるファイルから別のファイルの間で変更されたテキストの 1 つのブロックに対応しています。

それぞれの mg:rowGroup 要素中には 1 つ以上の mg:rows および(または)mg:omitted 要素があります。

mg:omitted が存在する場合、これは、[前後関係を示す X 行だけを表示する]オプションが有効になっているために、1 つ以上の行(2 つ 1 組、または 3 つ 1 組)が比較から省略されたという事実を単に記録します。

mg:row には mg:ln 要素のペア(2 者間比較)またはトリプレット(3 者間比較)が含まれています。そうして mg:row は、各ファイルの 1 行を別のファイルの 1 行に関連付ける、比較の 1 行を構成します。関連する行がない場合(これは、テキスト ブロックが挿入または削除された場合に生じます)は、mg:In 要素は当該のファイルにのみ存在します。したがって、レポート全体には、各オリジナル ファイル内のテキストの行ごとに正確に 1 つの mg:In 要素が存在します(ただし、行が省略されている場合を除きます)。

mg:In 要素は、それがどのファイルに属するかを示す file 属性を持っています(左から右へ 1、2、3 と番号付られます)。また、そのファイルの行のうち、要素が属している行番号を提供する number 属性もあります。最後に、行が全体として挿入箇所(‘I’)、削除箇所(‘R’)、変更箇所(‘C’)、あるいは変更なし(‘U’)であると見なされているかどうかを示す class 属性を持っています。

mg:ln 要素は mg:sg 子要素を含むことができます。各 mg:sg は、特定の強調色を使って一連の文字を表すことにより、行内の変更箇所を強調して知らせます。各セグメントは mg:In と類似した class 属性を持っており、そのセグメントが挿入箇所、削除箇所、変更箇所、あるいは変更なしのテキストを表しているかどうかを示します。Merge は長く連続したテキストを、それぞれ 10 文字を超えないように隣接したセグメントに分割します。これは、HTML 比較レポートを作成する XSLT が、一定の行の折り返しを考慮しやすいようにします。

ファイル比較では空白と行終端文字(CR と LF)が重要なので、これらはセグメント内で mg:smg:cr、および mg:lf 要素によって明示的にコード化されます。これは、これらの文字についての情報は XML 解析プロセスを切り抜けて残ることを保証します。

mg:rowGroup 要素とその mg:row および mg:ln 子要素は、比較したファイルの先頭から末尾に向かって行を表すように、XML レポート内で並べられます。