マージができない場合の動作

 

分岐間の変更内容によっては、マージするには複雑すぎて十分な互換性が保証されない場合があります。

これらの変更は通常、互いに異なっていたり矛盾しており、マージされた結果はMagic エンジンで読み込めなくなる場合があります。このような場合は、Magic Mergeで処理できないように制限します。

 

これらの制限により、Magic Studioの有効なソースとして複雑すぎるマージが出力されることが防止されます。このような制限が発生すると、Magic Mergeは、一方または他方の分岐を選択することで競合を解消する方法を提供します。

 

ツールでマージできないと判断した場合は、以下のようなメッセージダイアログが表示されます。

このような場合は、Magic Mergeの表示内容を参考にしてプログラムを修正したり、どちらかのソースを選択するようにしてください。

また、[XMLソースファイルを送ります]をクリックしてレポートを送って頂くことで、今後のツールの改良の際に参考にさせて頂きます。

差分が見つからない場合

全てのファイルが同じと判断された場合、以下のダイアログが表示されます。

  • ソースのXMLファイルに定義されていないデフォルト値は、Magic Mergeでは表示されない場合があります。

  • Magic 上で表示されるパラメータの値が同じでも、Merge で異なるものとして表示される場合があります。これは、ソースのXMLファイル上で値が異なるためです。

  • Magic Merge は、オブジェクト間の整合性を完全にはチェックできません。
    例えば、[ヘルプ画面]特性に定義されたヘルプがマージ処理によって自動ヘルプに変更されてもチェックされません。このため、出力したソースファイルをMagicで開いた時点で定義が外れたり、正しく実行しない場合があります。

  • オブジェクトがリポジトリ上で移動した場合、別のオブジェクトとして表示されます。このような場合は、どちらか一方だけを選択してください。両方を選択するとMagic側でオープンできなくなる場合があります。

  • 参照している別のオブジェクトが移動したことでオブジェクトが変更したものと扱われる場合があります。特性値自体に変更がない場合は、競合表示のままマージ処理を行うことができます。

  • ソースに変更はなくても、参照している(モデルなどの)オブジェクトの内容や位置が異なる場合、変更されているものと判断される場合があります。

  • [タスクタイプ]や[フォームタイプ]などが変更されたプログラムは、他の特性も変更されることになり、変更内容が複雑となるためマージが正しく行われない場合があります。

  • DataSourceIndex.xml や ProgramHeaders.xml は読み込めません。

  • マージされた結果をチェックインしない状態で次のマージ処理を行うと、前のマージ結果が考慮されない状態でマージが行われ、正しく処理できない場合があります。

参照先が削除されている場合

プログラム内の特性値として定義されている式やデータ項目がどちらかの分岐内で削除されている場合、競合していなくてもマージすることで正常なソースを作成できない場合があります。

Magic Mergeがこのような状態と判断した場合、マージの実行時に図のようなダイアログを表示します。このような場合は、式やデータ項目を追加することで対応できます。

この状態は、ツールバーの[紛失した参照先のチェック]をクリックしても確認することができます。

タスクツリー内でタスクが追加された場合

両方の分岐のマージ対象プログラムが以下のようにタスクツリー構成の変更が行われた場合は、Magic Mergeの起動時に以下のようなダイアログが表示されます。

  • 両方の分岐で新しく上位の親タスクが作成された場合。

  • タスク構造の中央に新しい親タスクが作成された場合。

フレームセットフォームのマージを行う場合

フレームセット形式のフォームをマージしようとした場合、次のような警告ダイアログが表示される場合があります。この場合はどちらかの分岐のフォームを選択する必要があります。

様々な理由でマージできないと判断された場合

以下のような理由でマージできない場合、ソース/ターゲットのどちらかのタスクだけを利用するようの選択することができるダイアログが表示されます。

  • フォームの変更内容が複雑すぎる(スクリーンモードとラインモードなど)場合

  • マージすることで作成されるプログラムに重複したISN(内部番号)が定義される場合

  • タスクタイプが異なるプログラムをマージしようとした場合

  • XMLタイプのデータソースをマージしようとした場合

  • フレームセットフォームをマージしようとした場合

タスクが複雑すぎてマージできない場合、すべての問題が解決されるまでマージは続行されません。

この場合は、ソースまたはターゲットのタスクをそのままマージすることで問題を解決することができます。つまり、選択したタスクソースは他の分岐の変更を無視して上書きされます。

そのようなタスクがマージされると、Magic Mergeは関連するプログラムにコメントを追加して、タスクが複雑すぎてマージできないことを表示します。この場合、特定のコメントが付いたマージ済みプログラムを見つけて、問題に対処することができます。


Copyright © 2020 Ocean Software Solutions   

http://www.magic-optimizer.com