GIT を使用する場合の VCS の操作¶
以下のサブセクションでは、Virtual DataPort でサポートされる GIT の操作およびこれらの使用方法について説明します。
プル、プッシュ、および元に戻す操作は、データベースを右クリックしたときは実行できますが、データベース以外のエレメントを右クリックしても実行できません。これは、これらの操作はリポジトリ全体に対してのみ実行でき、1 つのエレメントだけに対して実行することはできないからです。
コミット¶
「コミット」を実行すると、Virtual DataPort によって、変更されたエレメントの VQL が生成され、その VQL がローカルリポジトリにコミットされます。
1 つのエレメント (変更された依存関係もコミットされる)、フォルダ、またはデータベース全体をコミットできます。これを行うには、エレメント、フォルダ、またはデータベースを右クリックして、[Commit] をクリックします。次のようなダイアログが表示されます。

GIT: [Commit] ダイアログ¶
削除されたエレメントは、薄いグレーのフォントで表示されます。
ダイアログの上部にあるテキストボックスに「コミットメッセージ」を入力して、[Commit] をクリックします。
コミットの author フィールドおよび committer フィールドは、Administration Tool にログインしているユーザーのユーザー名になります。
これらのフィールドの値の取得を、Virtual DataPort サーバーを実行しているホストの GIT 構成に依存するよう設定する場合は、VQL シェルから次のコマンドを実行します。
SET 'com.denodo.vdb.vdbinterface.server.vcs.VCSConfigurationManager.useLoginAsAuthor' = 'false';
この変更を適用するために再起動する必要は ありません 。
このプロパティを false に設定すると、VCS モジュールは次の順序でシステムからユーザー名を取得しようとします。
リポジトリの構成ファイルから取得。
グローバル gitconfig ファイルから取得。
Virtual DataPort サーバーを実行しているユーザー名を取得。
プッシュ¶
プッシュは、ローカルリポジトリからリモートリポジトリにコミットを転送する操作です。
データベースの名前の横に、まだプッシュされていないコミットの数が表示されます。図「 GIT: number of pending commits 」では、保留中のコミットの数は 3 になっています。数値が表示されていない場合、すべてのコミットがプッシュ済みであることを示します。

GIT: 保留中のコミットの数¶
プッシュを実行するには、データベースを右クリックして、[VCS] > [Push] をクリックします。これにより、選択したデータベースで実行されたコミットがすべてプッシュされます。
リモートリポジトリに、まだプルされていないコミットがある場合、エラー「Error pushing database: REJECTED_NONFASTFORWARD」が表示されます。この場合、まずプルを実行してから、プッシュを実行する必要があります。
プル¶
プルは、リモートリポジトリでの変更をローカルリポジトリにマージする操作です。プル操作は、フェッチとその後のリベースによって実行されます。
プルを実行するには、データベースを右クリックして、[VCS] > [Pull] をクリックします。
プルを実行する場合、競合が生じる可能性があります。ローカルリポジトリにマージするコミットがあり、そのうちのいずれかのコミットによって変更されるエレメントをローカルでも変更していた場合に競合が生じます。
競合が生じた場合、次のようなダイアログが表示されます。

競合が生じたエレメントごとに、[Local] 列のチェックボックスまたは [Remote] 列のチェックボックスをチェックします。
[Local] をチェックすると、ローカルでの変更が保持され、リモートリポジトリでの変更は無効にされます。
[Remote] をチェックすると、ローカルでの変更が、リモートリポジトリでの変更で上書きされます。
プルによってローカルデータベースからエレメントが削除される場合、次のようなダイアログが表示されます。

GIT: プル操作の後に削除されるエレメントのリスト¶
また、VCS 環境でプル操作を行うと、特にローカルリポジトリがリモートリポジトリと同期していない場合にエラーが発生することがあります。Denodo 9.0 以降では、このようなエラーを解決しやすいように、エラーの特定と解決に役立つ複数の新機能が用意されています。
未解決エレメント¶
UNRESOLVED_ELEMENT は、データベースのプルプロセス中に競合が発生し、インポートできなかったエレメントを表します。これらのエラーは、インポート対象のエレメントが、すでに存在しない別のエレメントを参照している場合に発生することがあります。
こうした未解決エレメントは、プル操作時に生成されるデータベースツリーで可視化できます。確認後に未解決エレメントに対応する VQL スクリプトを表示でき、インポートを正常に行うためにスクリプトを修正して再実行することもできます。さらに、未解決エレメントに依存する依存エレメントの情報がインターフェイスに表示されます。これらの依存エレメントは、未解決エレメントとの競合が解決されるまでインポートされません。

未解決エレメント¶
たとえば、データベース内のビューが、プル操作後に削除または変更されたテーブルを参照する場合、そのビューは未解決エレメントになります。ユーザーは、未解決ビューの VQL スクリプトにアクセスして必要な調整を行い、スクリプトを実行することで競合を解決してビューを正常にインポートできます。

未解決エレメントのウィザード¶
未解決エレメントの競合の解決は、ローカルデータベースとリモートリポジトリの整合性と一貫性を確保するために不可欠です。
元に戻す¶
「元に戻す」操作は、ローカルリポジトリを特定のコミットにリセットします。その際、最後のコミットから始めて、選択したコミットに達するまで各コミットを取り消します。
前のバージョンに戻すことができるのは、管理者とデータベース管理者のみです。これは、標準ユーザーが前のバージョンに戻したときに、そのユーザーが実行を許可されていない VQL ステートメントが前のバージョンに含まれていることによって問題が発生するのを防ぐためです。
この操作では、対象のデータベースに属しているエレメント (データソース、ビュー、Web サービスなど) のみが元に戻され、グローバルエレメントが元に戻されることは ありません 。
元に戻す操作を実行するには、データベースを右クリックして、[VCS] > [Revert] をクリックします。次のようなダイアログが表示されます。

GIT: データベースを特定のコミットに戻す¶
元に戻す操作の実行後に、プッシュを実行して、変更を元に戻したコミットをリモートリポジトリに転送する必要があります。
グローバルエレメントを元に戻すには、以下の手順に従って実施してください。
グローバルエレメントをチェックインまたはチェックアウトするためのウィザードを開きます。データベースを右クリックして、[VCS] > [Global elements] をクリックします。このウィザードは、管理者のみが使用できます。
データベースが同期されている場合 (つまり、データベース内に変更されているエレメントがない場合)、ダイアログには [Revert] ボタンが表示されます。変更されているエレメントがある場合は、それらをチェックインしてから再開する必要があります。
元に戻すエレメントを選択して、[Revert] をクリックします。
選択したエレメントがコミットされた、すべてのコミットが一覧表示されます。戻す先のコミットを選択して、[Ok] をクリックします。
破棄¶
破棄 操作は、以下に対するローカルの変更と消去 (つまり、コミットされていない変更) を破棄します。
個々のエレメント
フォルダおよびそのコンテンツ
データベースおよびそのコンテンツ
破棄操作のスコープは、選択したエレメントのスコープに限定されます。スコープ外部のいずれの依存関係も、破棄操作の対象とは見なされません。
注釈
この動作の唯一の例外が、破棄操作に「 グローバルエレメント 」が含まれるときです。これは、データベースレベルの破棄操作の際に、ローカル変更されたグローバルエレメントに依存しているエレメントが存在することが検出された場合です。この場合、破棄操作は中止され、影響を受けるグローバルエレメントに加えられていた変更を破棄することの確認を求められます。
つまり、たとえば、変更が加えられていた基本ビューに依存している派生ビューへのローカル変更を破棄する場合、派生ビューのみが復元されるため、この操作は失敗する可能性があります (たとえば、派生ビューの復元されたバージョンに、基本ビューの現在のスキーマとの互換性がないなど)。このような場合、エラーが通知され、各エレメントについて、変更が加えられていたが復元できなかった依存関係が示されます。
バージョン管理外の同期されているエレメントに関し、次の点に留意してください。
これらのエレメントは破棄操作の影響を受けません。
これらのエレメントを破棄操作の対象にすることはできません。
削除¶
バージョン管理下にあるエレメントを削除した場合、そのエレメントはグレーのアイコンが付いた状態で [Server Explorer] に引き続き表示されますが、サーバーには存在しないため、エレメントの詳細情報に Administration Tool からアクセスすることはできません。エレメントを削除すると、他のエレメントも削除される可能性があります (他のエレメントが、該当のエレメントに依存しているため)。他のエレメントがバージョン管理下にある場合は、そのエレメントも [Server Explorer] にグレーのアイコンが付いた状態で表示されます。
削除したアイテムをチェックインすると、そのアイテムはバージョン管理サーバーから削除されます。フォルダまたはデータベース全体をチェックインすると、そこに含まれる削除済みのエレメントすべてがバージョン管理サーバーから削除されます。