最近のアクセス:
GeneXus Server: 競合とその解決方法
ここでは、競合 (コンフリクト) とは何か、競合の解決方法、解決するために使用できるツールについて説明します。

競合について

マージモードで GeneXus と GeneXus Server を使用している場合、複数の開発者が同じオブジェクトに変更を加えると、競合が発生する可能性があります。
競合は、ある開発者が加えた変更が、別の開発者が加えた変更と重複した場合に発生します。ほとんどの場合、競合は自動的に解決されないため、開発者が手動で解決する必要があります。

競合の発生を確認する方法

競合は、更新操作の実行中に発生します。
========== Partial Update started ==========
Updating Attribute 'CountryInitialsName'...'ShortCountryName' renamed to 'CountryInitialsName'
warning: Conflict in Attribute 'CountryInitialsName'.The object was updated with the server revision. 
Compare with the previous revision and solve the conflict manually (Attribute 'CountryInitialsName', View differences)
Successful
Partial Update Success
[ 更新 ] ダイアログの [ 結果 ] タブにも警告が表示されます。
イメージ:32260.png
注: 「The object was updated with the server revision (オブジェクトはサーバーのリビジョンで更新されました)」は、GeneXus Server が競合を検出すると、サーバー側の状態に合わせた新しいリビジョンがローカルのナレッジベースに作成されることを示します。
競合しているオブジェクトは、競合が解決されるまで [ 保留中のコミット ] リストに赤色で表示されます。 
イメージ:32261.png

競合の解決方法

これには 3 つの方法があります:
  1. マージ: これは最も一般的な方法で、ローカルで行われた変更とサーバーで行われた変更をマージします。この方法では、開発者が手動で競合を解決する必要があります。競合している変更を両方確認し、ローカルで行われた変更を手動で再適用して、オブジェクトの新しいリビジョンをローカルのナレッジベースに作成します。
    手動でマージした後、開発者は新しいコミット操作を安全に実行して、GeneXus Server リポジトリ内のオブジェクトを更新できます。 
     
  2. ローカルの変更のみを維持: 開発者は、リビジョンをローカルで行われた変更が含まれるバージョンに復元し ( [ 履歴 ] から [ アクティブとして指定 ] するか、コンテキストメニューから [ このリビジョンに戻す ] を実行)、オブジェクトを GeneXus Server にコミットします。
     
  3. サーバー側の変更のみを維持: 競合を解決済みとしてマークする必要があります。これを行うには、コミットダイアログを開き、オブジェクトを右クリックして [ 解決済みとしてマーク ] オプションを選択します。
イメージ:32262.png
注: 次の警告は、競合が解決済みとしてマークされていない状態で、開発者がそのオブジェクトをコミットしようとしたときに、 [ チーム開発 ] の出力に表示されます:
warning: Resolve Attribute 'CountryInitialsName' conflict before committing it.

ツール

手動で変更をマージするというタクスを軽減するために、GeneXus では次のツールを提供しています:

比較機能

1) 履歴と変更点: 両方の変更 (開発者がローカルで行った変更とサーバー側で行われた変更) を確認するには、オブジェクトの履歴を開きます。
最後のリビジョン (更新で作成されたリビジョンの 1 つ前) を選択し、 [ 現在のリビジョンと比較 ] オプションを選択します。また、更新後にオブジェクトに変更が加えられた場合は、 [ 比較対象となる左側を選択 ] オプションを使用してリビジョンを選択し、 [ <オブジェクト名> リビジョン:<リビジョン番号>と比較 ] を選択します。
イメージ:32264.png

注: ローカルで行われた変更のみを維持する (または古いリビジョンを復元する) 場合、開発者は [ アクティブとして指定 ] オプションまたは [ このリビジョンに戻す ] オプションを使用できます。
2) 保留中のコミット: コミットダイアログで、競合しているオブジェクトを右クリックすると、次の比較機能を使用できます。

イメージ:32265.png

入力値の説明:
  • コンフリクト発生前の変更を表示: 比較機能が開き、最後の更新の前に同期されたオブジェクト更新前のリビジョン (開発者が最後の更新の前にローカルで実行した変更) と比較します。
  • リモートの変更を表示: 比較機能が開き、最後の更新の前に同期されたオブジェクトのリビジョンを更新直後のリビジョン (別の開発者がサーバー側のオブジェクトに対して実行した変更) と比較します。
  • コンフリクトの解決方法を表示: 比較機能が開き、更新直前のリビジョンを更新直後のリビジョン (開発者がローカルで実行した変更と、サーバー側のオブジェクトに対する変更 (競合の原因となった変更)) と比較します。
注: オブジェクトのマージが正常に実行されると (ローカルの変更とサーバー側の変更に競合がない状態)、 [ 保留中のコミット ] の表示が緑になります。

参考情報






サブページ
Created: 15/01/07 22:49 by Admin Last update: 19/03/27 01:30 by Admin
カテゴリ
Powered by GXwiki 3.0