ファイルまたはディレクトリーのマージ

ソースをマージできるオブジェクト・タイプごとに、Rational® Synergy では CLI および GUI の両方にデフォルト・マージ・ツールを事前定義しています。GUI のデフォルト・マージ・ツールは対話式で、CLI のデフォルト・マージ・ツールは自動です。マージ・ツールは制御バージョンのファイルを新規に作成します。 マージが成功すると、この新規ファイルにマージ結果が書き込まれます。

ディレクトリーをマージする場合、マージ・ツールは、マージされた新しい制御ディレクトリーで、両方のディレクトリーからの追加内容と削除内容を自動的に把握します。

マージされるオブジェクトがプロジェクトのメンバーである場合には、Rational Synergy は、新しくマージされたオブジェクトをプロジェクトで使用します。

「コンフリクト」状態のエリアは、両方のバージョンで、共通の祖先に相対する同一の場所で変更が行われている場合に発生します。コンフリクトが含まれるファイルをマージした場合には、ユーザーが素早く簡単に見つけられるように、ツールはそのコンフリクトにマークを付けます。その上で、ツールはマージ結果を新規ファイルに書き込みます。

以下の例に、マージされたファイルにどのようにマークが付けられるかを示します。

<<<<<<<file1 filename1
conflicting lines in file1
=======
conflicting lines in file2
>>>>>>>file2 filename2

UNIX および Windows の場合、デフォルト・マージ・ツールは ccm.properties ファイルに指定されます。オブジェクト・タイプごとに異なるマージ・ツールを指定することができます。指定したマージ・ツールは、指定したタイプと、マージ・ツールが指定されていないすべてのサブタイプに適用されます。デフォルトでは、ASCII ファイル・タイプにのみ、マージ・ツールが定義されています。

ccm.properties ファイルには、マージされたファイルが正しいエンコード方式で表示されるように、以下のようにエンコード・ルールを設定することもできます。

// UNIX でソース・オブジェクトをマージして、その状況をチェックするコマンド
ccm.cli.tools.merge.ascii.unix=%ccm_home/bin/util/cc_merge %ccm_home %{encoding[null='CP1252']} %outfile %file1 %ancestor %file2^M
// Windows でソース・オブジェクトをマージして、その状況をチェックするコマンド
ccm.cli.tools.merge.ascii.windows="%ccm_home¥¥¥¥bin¥¥¥¥util¥¥¥¥cc_merge.bat" "%ccm_home" %{encoding[null='CP1252']} %outfile %file1 %ancestor %file2

ccm_merge コマンドに指定する 2 番目のパラメーターを使用して、マージするファイルのエンコード方式を指定できます。構文“%{encoding[null='CP1252']}” は、次のように解釈されます。

オブジェクト・タイプが encoding_rules 属性でワークエリアのエンコード方式を指定している場合、そのエンコード方式を使用してマージします。そうでない場合は、CP1252 エンコード方式を使用します。(encoding_rules 属性の説明については、ファイル・エンコード を参照してください。)

このパラメーターには、CP1252 以外のデフォルト・エンコード方式を指定できます。例えば、以下の構文は、オブジェクト・タイプにエンコード方式が指定されていない場合に UTF8 エンコード方式を使用することを示します。

ccm.cli.tools.merge.ascii.windows="%ccm_home¥¥¥¥bin¥¥¥¥util¥¥¥¥cc_merge.bat" "%ccm_home" %{encoding[null='UTF8']} %outfile %file1 %ancestor %file2

以下の構文は、常に CP1252 エンコード方式を使用することを示します。

ccm.cli.tools.merge.ascii.windows="%ccm_home¥¥¥¥bin¥¥¥¥util¥¥¥¥cc_merge.bat" "%ccm_home" CP1252 %outfile %file1 %ancestor %file2

有効なエンコード方式は、CP1252、UTF8、BIG5、eucJP、EUC-KR、SJIS、および GB18030 です。

マージするファイルと、これらのファイルの祖先ファイルは、同じエンコード方式を使用する必要があります。

例えば中国語のデータベースでは、ascii タイプに以下のエンコード・ルールを設定できます。

Server-encoding: GB18030
Unix-wa-encoding: GB18030
Windows-wa-encoding: GB18030

ccm_merge コマンドでデフォルト・エンコード・パラメーターが使用された場合、CLI および GUI のマージ・ツールは GB18030 エンコード方式を設定して呼び出されます。

あるいは、サイトに中国語のデータベースだけが含まれている場合には、デフォルトのマージ・コマンドを以下のように変更すると、ascii タイプに encoding_rules 属性を指定する必要がなくなります。

ccm.cli.tools.merge.ascii.windows="%ccm_home¥¥¥¥bin¥¥¥¥util¥¥¥¥cc_merge.bat" "%ccm_home" %{encoding[null='GB18030']} %outfile %file1 %ancestor %file2

このタスクについて

ccm merge [[-create_task] | [-t|-task task_spec]]
          [-c|-comment comment_string]
          [-ce|-commentedit] [-cf|-commentfile file_path]
          file_spec1 file_spec2
-c|-comment comment
マージ結果を含める新規オブジェクトに関するコメントを追加するように指定します。comment には、複数の行を含めることができ、円記号でコード化した値を使用できます。

このオプションは、-commentedit および -commentfile と共に使用できます。-commentedit オプションを使用すると、コメントはデフォルトのテキスト・エディターに表示されます。

-ce|-commentedit
コメントの作成や編集でデフォルトのテキスト・エディターが起動されるように指定します。このテキスト・エディターで保存された結果は最終コメントとして使用されます。このオプションは、-comment および -commentfile オプションと共に使用できます。
-cf|-commentfile file_path
指定したファイルの内容をコメントとして使用するよう指定します。 -comment を指定している場合、指定したファイルの内容が該当のコメントに追加されます。このオプションは、-commentedit オプションと共に使用できます。
-create_task
Rational Synergy が新しくマージされたオブジェクト・バージョンを作成すると、自動的にタスクが作成されるようにして、その新規オブジェクト・バージョンにタスクを関連付けます。

このタスクは、マージを実行したユーザーに割り当てられます。タスクのリリース値は、新規オブジェクト・バージョンが作成されたプロジェクトのリリース値に設定されます。オブジェクト・バージョンがプロジェクト外部で作成される場合には、リリース値は設定されません。

file_spec1
file_spec1 は、最初にマージするファイルまたはディレクトリーを指定します。このオプションは、マージされたオブジェクトのデフォルトの次のバージョンを決定するために使用します。file_spec1 には、1 つのファイルまたはディレクトリーのファイル仕様を設定できます。
file_spec2
file_spec2 は、2 番目にマージするファイルまたはディレクトリーを指定します。file_spec2 には、1 つのファイルまたはディレクトリーのファイル仕様を設定できます。file_spec1 がファイルの場合は、file_spec2 もファイルでなければなりません。 file_spec1 がディレクトリーの場合は、file_spec2 もディレクトリーでなければなりません。
-t|-task task_spec
マージされた新しいバージョンに関連付けるタスクを指定します。-task を指定しない場合、カレント・タスクを設定していれば、そのカレント・タスクがデフォルトで使用されます。詳しくは、『タスク仕様』を参照してください。

フィードバック