ファイルマージによって、2 つのテキストファイルを比較したり、2 つのファイルをマージ (併合) してファイルを新規に作成したり、あるファイルの 2 つの編集バージョンを元のファイルと比較して、新しい編集内容をすべて含むファイルを新規に作成することができます。
この章では、ファイルマージを起動する方法、ファイルを読み込んだ状態で起動する方法、出力ファイルを保存する方法について説明します。この章は、次の各節で構成されています。
ファイルマージは、2 つのテキストファイルをそれぞれ読み取り専用のテキスト区画内に読み込んで、並べて表示します。2 つのファイルの相違にはマークが付けられています。ここで、2 つのファイルをマージし、編集して、最終的なマージファイルを作成することができます。
マージする 2 つのファイルを読み込む際、その 2 つのファイルの元となった 3 番目のファイル (祖先ファイル) を指定して比較することもできます。この祖先ファイルを指定した場合、ファイルマージは、2 つの子孫ファイル内で祖先とは異なる行をマークし、3 つのファイルすべてをマージしたファイルを生成します。
マージしたファイルには、2 種類の行が含まれます。
両方の入力ファイルに共通の行
解決された相違
WorkShop メインウィンドウからファイルマージを起動するには、「ツール」⇒「ファイルマージ」 を選択します。
ファイルをファイルマージに読み込むには、次の手順に従ってくだ さい。
「ファイル」⇒「開く」を選択します。
「ディレクトリ」テキストボックスで、作業用ディレクトリを選択します。
これは、ファイルの選択および保存に使用されるデフォルトのディレクトリです。このテキストボックスの右横の「. . .」ボタンをクリックすると、ディレクトリを選択するためのダイアログボックスが表示されます。
「左のファイル」テキストボックスと「右のファイル」テキストボックスで、比較したい 2 つのファイルを選択します。
ファイルを共通の祖先と比較する場合は、2 つのファイルの祖先ファイルを「祖先ファイル」テキストボックスに入力します。
自動ファイルマージを使用するには、祖先ファイルが必要です。
出力ファイルの名前を指定したい場合は、「出力ファイル」テキストボックスに名前を入力します。
filemerge.out という名前のファイルが、デフォルトで作業用ディレクトリに保存されます。
「開く」をクリックして、ファイルを読み込みます。
図 7-1 に、ファイルを読み込んだ状態の「ファイルマージ」ウィンドウを示します。左側のファイル名、右側のファイル名、出力ファイル名は、それぞれのテキスト区画の上に表示されています。3 つのファイルの比較では、祖先ファイルの名前はウィンドウのヘッダーに表示されます。
各種のファイルマージ用オプションを設定するには、「オプション」メニューを使用します。このメニュー項目からは、次の処理を実行することができます。
ファイルのマージされたバージョンを自動的に作成する
ファイルを個々にスクロールするのか、対応する行で同時にスクロールするのかを制御する
タブストップをカスタマイズする
スペースの処理や大文字と小文字の違いの処理方法を設定する
ファイルマージを使うと、ファイル間の相違を処理できます。ファイルマージは、マージする 2 つのファイル (または 2 つのうちのどちらかのファイルと祖先ファイル) の間で異なる行を検出すると、行の相違の種類に応じたグリフを使って、2 つのファイルの行にマークします。マークされた行をまとめて相違と呼びます。ファイル内のある相違から次の相違に移動すると、異なる行とそのグリフが強調表示されます。
強調表示されている相違を現在の相違と呼びます。直前の相違を「前の相違」、直後の相違を「次の相違」と呼びます。
行に対する変更が受け入れられると、相違は解決されたことになります。残された相違とは、まだ解決されていない相違のことです。
「自動マージ」オプションがオンの場合は、ファイルマージは相違を自動的に解決します。
グリフは、ファイル間の相違を理解する手がかりとなります。以下の 3 種類のグリフがあります。
グリフの種類 |
意味 |
---|---|
プラス記号 (+) |
新規の行 |
マイナス記号 (-) |
削除行 |
縦棒 (|) |
行内に変更あり |
グリフなし |
行内に変更なし |
共通の祖先ファイルを指定する場合は、祖先内の対応する行と異なると、各ファイルの該当する行の隣に以下のようなグリフが表示されます。
行が 3 つのファイルすべてで完全に同じ場合は、グリフは表示されない
子孫のどちらかまたは両方に行が追加されている場合は、行が追加された位置に正符号 (+) が表示され、行が強調表示される
行が祖先にはあるが、子孫のどちらかまたは両方から削除されている場合は、行が削除された位置にマイナス符号 (-) が表示され、行が強調表示されて打ち消し線が付けられる
行が祖先にはあるが、子孫のどちらかまたは両方で編集されている場合は、行が変更された場所に縦棒 (|) が表示され、異なる文字が強調表示される
相違が解決されると、グリフは白抜きのフォントに変わります。
相違間を移動するには、2 つの区画の上にあるボタンか、「ナビゲート」メニューを使用します。相違を受け入れないで前の相違へ移動する場合は「前」ボタンを、次の相違へ移動するには「次」ボタンをクリックします。「ナビゲート」⇒「検索」を選択すると、特定のテキスト文字列に移動し、「ナビゲート」⇒「行の移動」を選択すると、特定の行番号に移動します。
「親」と「子」の区画で使用できるポップアップメニューを使って相違間を移動することもできます。どちらかの区画を右クリックすると、メニューが開きます。
相違を解決するには、左右の区画の一方で変更を受け入れます。
「受け入れ」ボタンをクリックすると、相違を受け入れる
「受け入れて次へ」ボタンをクリックすると、変更を受け入れて次の相違に移動する
Sun WorkShop TeamWare の「ワークスペース管理」ウィンドウの「解決」トランザクションで起動した場合、「ファイルマージ」ウィンドウに「再読み込み」ボタンが追加されます。解決処理中に「再読み込み」ボタンをクリックすると、ファイルが再度読み込まれ、解決された相違はすべて破棄されて、最初から処理が行われます。「自動マージ」オプションが選択されている場合は、ディスクからファイルが再度読み込まれ、矛盾がない相違は自動的に解決されます。ユーザーは残りの矛盾する行について、いずれか一方のバージョンを受け入れます。
ファイルマージをカスタマイズしてファイル間の特定の相違を無視させるには、「オプション」⇒「相違オプション」を選択します。こうすると、ファイルマージが連続するスペース文字や行末のスペースを無視するように設定できます。
ファイルマージは、以下の規則に従って、相違を自動的に解決できます。
行が 3 つのファイルすべてについて変更のない行は、出力ファイルに追加される
行が子孫のどちらかで変更されている場合は、変更された行が出力ファイルに追加される
変更の内容には、行全体の追加または削除、行の内容の編集などがあります。
両方の子孫の行に対して同じ変更が加えられている場合は、変更された行が出力ファイルに追加される
両方の子孫の行が編集されていて、3 ファイルすべてが異なる場合は、どの行も出力ファイルには追加されない
このような場合は、相違の解決方法をユーザーが決定しなければなりません。子孫の行を選択するか、マージ後にファイルを手動で編集するかを決めてください。
ファイルマージが相違を自動的に解決すると、グリフが白抜きのフォントに変わります。ファイルマージを使って、自動的に解決された相違が正しい選択をしているかどうかを確認することができます。
「オプション」⇒「自動マージ」を選択すると、自動ファイルマージ機能をオフにすることができます。自動ファイルマージ機能がオフのとき、出力ファイルには 3 ファイルすべてについて同じ行のみが追加されるため、相違はユーザー自身が解決する必要があります。
祖先ファイルを指定しない場合は、ファイルマージには、2 つの入力ファイル間の相違を比較する際の判定基準がありません。したがって、ファイルマージは、相違のどちらの行が必要な変更内容を表しているかを判断することができません。祖先を指定しないで自動ファイルマージを実行すると、自動ファイルマージをオフにした場合と同じ結果になります。すなわち、ファイルマージは、両方の入力ファイルで同じ行だけを使用してマージファイルを作成するため、相違はユーザー自身が解決する必要があります。
出力ファイルを保存するには、「保存」ボタンをクリックするか、「ファイル」⇒「保存」を選択します。出力ファイルの名前は、「出力ファイル」テキストボックスに指定した名前です。
保存する際に出力ファイルの名前を変更するには、「別名保存」を選択して呼び出されたウィンドウに、新しいファイル名とディレクトリ名を入力します。