ファイルマージは、シェルコマンド行、Sun WorkShop のメインウィンドウ、Sun WorkShop TeamWare の各種ツールなどから起動できます。
コマンド行から、ファイルを読み込まずにファイルマージを起動するには (ファイルマージの実行可能ファイルが検索パス上にあることが前提です)、シェルコマンドプロンプトで twmerge と入力し、その後にアンパサンド (&) を入力します。
demo% twmerge &
ファイルマージがファイルを読み込まずに (バックグラウンドで) 起動されます。
twmerge コマンドのすべてのオプションを以下に示します。コマンドオプションは、角括弧で囲んで表わしています。
twmerge [-b] [-r] [-a <祖先>] [-f1 <名前 1>] [-f2 <名前 2>] [-l <リストファイル>] [ <左ファイル><右ファイル>[<出力ファイル>]] [-V]
-b |
行を比較する際、行末の空白文字およびタブを無視します。 |
-r |
読み取り専用モードでファイルマージを起動します。このオプションを指定すると、入力ファイルの区画のみが表示され、出力ファイルの区画 (「マージ後の結果」区画) は表示されません。 |
-a <祖先> |
マージされる 2 つのファイル (祖先ファイルの子孫と呼ばれます) の祖先ファイルを指定します。マージ後のファイルは、この祖先ファイルと、子孫ファイル内で行われた変更内容に基づいて作成されます。
-1 <リストファイル> オプションと一緒に使用すると、<祖先> は、ファイルのディレクトリの指定になり、「ファイル」メニューのコマンドを使って、ファイルを続けて読み込むことができます。 |
-f1 <名前 1> |
第 1 (左) ファイルの名前として表示される参照用のファイル名を指定します。このオプションは、(-1 オプションを使って) リストに列挙されたファイルを読み込む際、「ファイル」マージウィンドウだけで表示される参照用の名前を指定したい場合に便利です。
たとえば、製品の 2 つの異なるバージョンに対応する 2 つのディレクトリからファイルを読み込む場合、-f1 オプションを使って左ファイル区画の上に Rev1 という名前を表示し、-f2 オプションを使って右ファイル区画の上に Rev2 という名前を表示することができます。 |
-f2 <名前 2> |
第 2 (右) ファイルの名前として「ファイルマージ」ウィンドウに表示される参照用のファイル名を指定します。 |
-1 <リストファイル> |
個々のファイル名のリストが格納されているファイルを指定します。このオプションは、プロジェクトのディレクトリ全体をマージするときに便利です。
ファイルマージは、<リストファイル> 中のファイル名を使って、引数として指定した <左ファイル> および <右ファイル> のディレクトリから連続してファイルを読み込み、引数として指定した <出力ファイル> のディレクトリに出力ファイルを作成します。 <リストファイル> 中に指定するファイル名は、引数として指定した <左ファイル> および <右ファイル> のディレクトリにあるファイル名と一致していなければなりません。-a <祖先> オプションも同時に使用する場合は、<祖先> 引数はディレクトリでなければなりません。ファイルマージは、<リストファイル> に指定されたファイルと同じファイルを <祖先> に指定されたディレクトリ内で検索し、名前の一致したファイルを各マージ処理で祖先ファイルとして使用します。
<リストファイル> として "-"を指定すると、ファイルマージは標準入力からファイルリストを読み込みます。 |
<左ファイル> |
比較のために読み込まれる左ファイルの名前です。-1 <リストファイル> オプションと一緒に使用すると、<左ファイル> は、ファイルのディレクトリ名になり、「ファイル」メニューのコマンドを使って、ファイルを続けて読み込むことができます。 |
<右ファイル> |
比較のために読み込まれる右ファイルの名前です。-1 <リストファイル> オプションと一緒に使用すると、<右ファイル> は、ファイルのディレクトリ名になり、「ファイル」メニューのコマンドを使って、ファイルを続けて読み込むことができます。 |
<出力ファイル> |
マージ後の出力ファイル名を指定します。<出力ファイル> を指定しないと、デフォルトの名前である filemerge.out が使用されます。ファイルを保存するときに別の名前を指定する場合は、「ファイル」メニューの「別名保存」を使用します。
-1 <リストファイル> オプションを使用すると、<出力ファイル> 名はディレクトリ名になり、マージ後の出力ファイルは、すべてこのディレクトリの下に保存されます。<出力ファイル> ディレクトリ内の個々のファイル名は、<リストファイル> に指定されたファイル名と同じになります。 |
-V |
ファイルマージは起動されず、アプリケーションのバージョン番号が表示されます。 |
-1 <リストファイル> オプションを使用する場合は、3 つの入力ファイル (祖先、左ファイル、右ファイル) は、すべてディレクトリを指定してください。-1 <リストファイル> オプションを使用しない場合は、3 つの入力ファイルのうち 2 つにはディレクトリを指定できますが、必ず 1 つはファイル名を指定する必要があります。この場合、ファイルマージは、ファイル名を使用して各ディレクトリ内で同じローカル名を持つファイルを検索します。
コマンド行からファイルマージを起動するときに 2 つのファイルを読み込むには、読み込むファイルが格納されているディレクトリに移動し、コマンド行でファイル名を指定します。file_1 と file_2 というの 2 つのファイルをマージするときは、次のようにコマンドを入力します。
demo% twmerge file_1 file_2 &
最初に指定したファイルが左側の区画に表示され、2 番目に指定したファイルが右側の区画に表示されます。
2 つのファイルをマージし、同時に ancestor_file という名前の共通の祖先ファイルと比較するには、これらのファイルが格納されているディレクトリに移動し、ファイル名を次のように指定してコマンドを実行します。
demo% twmerge -a ancestor_file file_1 file_2 &
祖先ファイルは表示されませんが、祖先ファイルと 2 つの子孫ファイルの間の相違にマークが付けられ、祖先ファイルをもとにしてマージ後の出力ファイルが作成されます。
ファイル名のリストに従って順番にファイルマージにファイルを読み込むことができます。たとえば、プロジェクトのソースファイルの祖先バージョンが /src という名前のディレクトリに保存されているとします。ある開発者が /usr_1 というディレクトリで file_1、file_2、file_3 の各ファイルを編集し、同時に別の開発者が同じファイルを /usr_2 というディレクトリで編集していました。この 2 組のファイルに行われた変更をマージし、マージ後のバージョンを /new_src というディレクトリに格納しなければならないとします。
/src、/usr_1、および /usr_2 のディレクトリをマージするには、まず次のように、マージする 3 つのファイル名だけが 1 行に 1 つずつ記述されているリストファイルを作成します。
file_1 file_2 file_3
このリストファイルを、ファイルマージを起動する作業ディレクトリに sourcelist という名前で保存します。そのディレクトリに (cd(1) コマンドを使用して) 移動し、次のコマンドを実行してファイルマージを起動します。
demo% twmerge -a /src -1 sourcelist /usr_1 /usr_2 /new_src/file_1 &
ファイルマージは、/usr_1/file_1 を左側の区画に、/usr_2/file_1 を右側の区画にそれぞれ読み込み、その 2 つのファイルを共通の祖先 /src/file_1 と比較します。この 2 つのファイルの相違が解決できた時点で、「ファイル」メニューから「保存」を選択すると、出力ファイルは /new_src/file_1 として保存されます。
ファイルマージは、Sun WorkShop のメインウィンドウのツールバーまたは「ツール」メニューから起動したり、別の TeamWare ツールの「TeamWare」メニューから起動することができます。
Sun WorkShop のメインウィンドウからファイルマージを起動するには、ツールバーの「ファイルマージ」アイコンをクリックします。または「ツール」⇒「ファイルマージ」を選択します。
Sun WorkShop TeamWare からファイルマージを起動するには「ワークスペース管理」、「バージョン管理」、または「フリーズポイント」のいずれかのウィンドウで「TeamWare」⇒「ファイルマージ」を選択します。
ファイルマージにファイルを読み込むには、「ファイル」⇒「開く」を選択するか、「開く」ボタンをクリックします。「ファイルを開く」ダイアログ (図 12-1 参照) が開きます。
「ディレクトリ」フィールド |
ファイルマージを Sun WorkShop から起動するか、引数を指定しないでコマンド行から起動した場合は、必ずこのフィールドに現在の作業ディレクトリが表示されます。このフィールドの内容は編集できます。ファイル名は現在の作業ディレクトリとの相対パス名で指定できます。したがって、サブディレクトリ内のファイルを指定するには、<サブディレクトリ>/<ファイル名> のように指定し、親ディレクトリ内のファイルを指定するには、../<ファイル名> のように指定できます。先頭に "/" を付けてファイル名を指定すると、現在の作業ディレクトリと関連するものではなく、絶対パス名として解釈されます。 |
「左のファイル」フィールド |
左側の「子」区画に表示するファイルを指定します。 |
「右のファイル」フィールド |
右側の「親」区画に表示するファイルを指定します。 |
「祖先ファイル」フィールド |
祖先ファイルの名前を指定します。ファイルマージはこのファイルとマージされるファイルとを比較し、マージファイルの中で祖先ファイルと異なる行を識別します。ファイルの自動マージは、祖先ファイルに基づいて行われますが、祖先ファイルは「ファイルマージ」ウィンドウに表示されません。祖先ファイル名を入力しない場合は、ファイルマージは左右のファイルのみを比較し、その 2 つのファイルから出力ファイルを作成します。祖先ファイルを指定せずに自動マージを実行することはできません。 |
「出力ファイル」フィールド |
マージ後の出力ファイルの名前を指定します。このフィールドに入力した名前は、マージ後の出力ファイル名になります。特定の名前が指定されない場合、ファイルマージは出力ファイルに filemerge.out という名前を付けて、現在の作業ディレクトリに保存します。 |
「開く」ボタン |
このボタンをクリックすると、テキストフィールドで指定したファイルが読み込まれます。 |
「ファイルマージ」ウィンドウにファイルが読み込まれているときは、左ファイル、右ファイル、出力ファイルの名前がそれぞれの表示区画の上に表示されます。祖先ファイルの名前は、ウィンドウヘッダーに表示されます。