Git 統合の基本的な概念

この記事では、Git の基本的な概念と、Git と Microsoft Fabric ワークスペースの統合プロセスについて説明します。

アクセス許可

  • 組織の管理者が Git 統合を有効にする必要があります。
  • ワークスペースと Azure リポジトリが 2 つの異なるリージョンにある場合、テナント管理者は クロスジオ エクスポートを有効化 する必要があります。 この制限は、GitHubには適用されません。
  • 次のセクションに示すように、ワークスペースと Git の両方で持っているアクセス許可によって、実行できるアクションが決まります。

次のリストは、Git リポジトリでの権限に応じて、さまざまなワークスペース ロールが実行できる操作を示しています。

  • 管理者: ワークスペースに対して任意の操作を実行できます。Git ロールによってのみ制限されます。
  • メンバー/共同作成者: ワークスペースに接続すると、共同作成者またはメンバーは、Git ロールに応じて変更をコミットおよび更新できます。 さらに、ワークスペース レベルの [ Git ブランチの変更を少なくとも共同作成者ロールを持つユーザーに許可 する] 設定が有効になっている場合、すべての項目への書き込みアクセス権を持つ共同作成者は、ブランチを切り替えて、新しいブランチをチェックアウトできます。 ワークスペース接続に関連するその他のアクション (接続や切断など) については、管理者にヘルプを要求します。
  • ビューアー: アクションを実行できません。 閲覧者は、ワークスペースに Git 関連情報を表示できません。

ワークスペースの役割

次の表では、さまざまな一般的な操作を実行するために Fabric ワークスペースで必要なアクセス許可について説明します。

操作 ワークスペース ロール
ワークスペースを Git リポジトリに接続する 管理者
ワークスペースを Git リポジトリと同期する 管理者
ワークスペースを Git リポジトリから切断する 管理者
ワークスペース内のブランチを切り替える (または接続設定の変更) 管理者 (常に);
すべてのアイテムに対する WRITE アクセス許可を持つメンバー/共同作成者 (ワークスペース設定の [ Git ブランチの変更を少なくとも共同作成者ロールを持つユーザーを許可する ] がオンの場合)
Git 接続の詳細を表示する 管理者、メンバー、共同作成者
ワークスペースの 'Git 状態' を確認する 管理者、メンバー、共同作成者
Git から更新する 次のすべてのロール:

ワークスペースの共同作成者 (すべてのアイテムに対する書き込みアクセス許可)

アイテムの所有者 (テナント スイッチが非所有者の更新をブロックする場合)

外部依存関係に基づいてビルドする (該当する場合)
ワークスペースの変更を Git にコミットする 次のすべてのロール:

ワークスペースの共同作成者 (すべてのアイテムに対する書き込みアクセス許可)

アイテムの所有者 (テナント スイッチが非所有者の更新をブロックする場合)

外部依存関係に基づいてビルドする (該当する場合)
Fabric 内から新しい Git ブランチを作成する 管理者 (常に);
すべてのアイテムに対する WRITE アクセス許可を持つメンバー/共同作成者 (ワークスペース設定の [ Git ブランチの変更を少なくとも共同作成者ロールを持つユーザーを許可する ] がオンの場合)
別のワークスペースに分岐する 管理者、メンバー、共同作成者

Git ロール

次の表では、さまざまな一般的な操作を実行するために必要な Git アクセス許可について説明します。

操作 Git のアクセス許可
ワークスペースを Git リポジトリに接続する 読み取り=許可
ワークスペースを Git リポジトリと同期する 読み取り=許可
ワークスペースを Git リポジトリから切断する アクセス許可は必要ありません
ワークスペース内のブランチを切り替える (または接続設定の変更) Read=許可 (ターゲット リポジトリ/ディレクトリ/ブランチ内)
Git 接続の詳細を表示する 読むまたはなし
ワークスペースの 'Git 状態' を確認する 読み取り=許可
Git から更新する 読み取り=許可
ワークスペースの変更を Git にコミットする 読み取り=許可
貢献=許可する
ブランチ ポリシーで直接コミットを許可する必要がある
Fabric 内から新しい Git ブランチを作成する 役割=書く
ブランチの作成 =許可
別のワークスペースに分岐する 読み取り=許可
ブランチの作成 =許可

接続と同期

ワークスペースを Git に接続すると、2 つの場所間でファブリックが同期され、同じコンテンツが含まれます。 この初期同期中に、ワークスペースまたは Git ブランチのいずれか一方が空で、もう一方にコンテンツがある場合、コンテンツは、空ではない場所から空の場所にコピーされます。 ワークスペースと Git ブランチの両方にコンテンツがある場合は、同期の方向を決定する必要があります。

  • ワークスペースを Git ブランチにコミットすると、サポートされているすべてのワークスペース コンテンツが Git にエクスポートされ、現在の Git コンテンツが上書きされます。
  • Git コンテンツを使用してワークスペースを更新すると、ワークスペースのコンテンツが上書きされ、ワークスペースのコンテンツが失われます。 Git ブランチは常に前のステージに復元できますが、ワークスペースでは復元できないため、このオプションを選択した場合は、確認を求められます。

Git とワークスペースの両方にコンテンツがある場合に同期する方向を求めるダイアログのスクリーンショット。

同期するコンテンツを選択しないと、作業を続行できません。

ワークスペースが同期されるまで作業を続行できないことを示すスクリーンショット通知。

  • ワークスペース管理者のみがワークスペースを Git リポジトリに接続できますが、接続すると、アクセス許可を持つすべてのユーザーがワークスペースで作業できます。 管理者でない場合は、管理者に連絡して、接続の支援をしてもらってください。
  • また、ワークスペース レベルの [ 共同作成者ロールを持つユーザーに Git ブランチの変更を許可する ] 設定が有効になっている場合は、共同作成者がブランチの切り替えを実行することもできます (設定にはアクティブな Git 接続が必要であり、メンバー/共同作成者はワークスペース内のすべてのアイテムに対する書き込みアクセス権を持っている必要があります)。

少なくとも共同作成者ロールを持つユーザーが Git ブランチを変更できるようにするのスクリーンショット。

フォルダー

接続されて同期されると、ワークスペース構造は、フォルダー構造を含め、Git リポジトリにミラー化されます。 フォルダー内のワークスペース 項目は、Git リポジトリ内の同じ名前のフォルダーにエクスポートされます。 逆に、Git フォルダー内の項目は、ワークスペース内の同じ名前のフォルダーにインポートされます。

注釈

フォルダー構造は保持されるため、ワークスペースにフォルダーがあり、接続された Git フォルダーにサブフォルダーがまだない場合、それらは異なると見なされます。 ソース control panelにコミットされていない変更状態が表示され、ワークスペースを更新する前に Git に変更をコミットする必要があります。 最初に更新すると、Git フォルダー構造 によってワークスペース フォルダー構造が上書き されます。 詳細については、「 フォルダーの変更を安全に処理する」を参照してください。

ワークスペースとサブフォルダーを含む対応する Git ブランチのスクリーンショット。

  • 空のフォルダーは Git にコピーされません。 アイテムを作成またはフォルダーに移動すると、そのフォルダーが Git で作成されます。
  • Git の空のフォルダーは自動的に削除されます。
  • ワークスペース内の空のフォルダーは、すべてのアイテムが別のフォルダーに移動された場合でも、自動的に削除されません。
  • フォルダー構造は、最大 10 レベルの深さまで保持されます。

フォルダーの変更を安全に処理する

ワークスペースにフォルダーがあり、接続された Git フォルダーにサブフォルダーがまだない場合、フォルダー構造が異なるため、それらは異なると見なされます。 フォルダーを含むワークスペースを Git に接続すると、ソース control panelに コミットされていない変更 状態が表示され、ワークスペースを更新する前に Git に変更をコミットする必要があります。

ブランチ ポリシーまたはアクセス許可により、接続されたブランチに直接変更を加えることができない場合は、 Checkout Branch オプションを使用することをお勧めします。

  1. 新しいブランチをチェックアウトする: チェックアウト ブランチ機能を使用して、Fabric ワークスペースの更新された状態のブランチを作成します。
  2. フォルダーの変更をコミットする: ワークスペース フォルダーの変更は、この新しいブランチにコミットできます。
  3. 変更のマージ: 通常の pull request (PR) およびマージ プロセスを使用して、これらの更新を元のブランチに統合します。

共有ワークスペースに接続する

Git に既に接続されているワークスペース に接続しようとすると、次のメッセージが表示されることがあります。

Git アカウントにサインインするように指示するエラー メッセージのスクリーンショット。

ソース control panelの右側にある Accounts タブに移動し、アカウントを選択して接続します。

ユーザーが GitHub アカウントに接続している、[アカウント] タブのスクリーンショット

Git の状態

接続すると、ワークスペースには、リモート ブランチ内の項目に関連するワークスペース内の各項目の同期状態を示す Git 状態 列が表示されます。

ワークスペース内の項目の Git 状態がアウトライン表示されている場合のスクリーンショット。

各アイテムは、次のいずれかの状態にあります:

  • 同期済み (項目はワークスペースと Git ブランチで同じです)
  • 競合 (項目がワークスペースと Git ブランチの両方で変更されました)
  • サポートされていないアイテムです
  • ワークスペースのコミットされていない変更
  • Git からの更新が必要
  • アイテムは両方の場所で同じですが、最後のコミットに更新する必要があります

同期情報

接続している限り、画面の下部に次の情報が表示されます。

  • 接続された支店
  • 前回の同期時刻
  • ワークスペースが同期されている最後のコミットへのリンク

Git に接続したときに画面の下部に表示される同期情報のスクリーンショット。

ソース管理ウィンドウ

画面の上部には、[ ソース管理 ] アイコンがあります。 ワークスペースと Git ブランチで異なる項目の数が表示されます。 ワークスペースまたは Git ブランチに変更を加えると、番号が更新されます。 ワークスペースが Git ブランチと同期されると、ソース管理アイコンに 0 が表示されます。

変更された項目が 0 個表示されているソース管理アイコンのスクリーンショット。

[ソース管理] アイコンを選択して、[ ソース] コントロール パネルを開きます。

ソース コントロール ペインの側面には 3 つのタブがあります。

コミットと更新

ワークスペースまたは Git ブランチのいずれかに変更が加えられた場合、[ソース管理] アイコンには、異なる項目の数が表示されます。 ソース管理アイコンを選択して、ソース control panelを開きます。

[コミットと更新] パネルには 2 つのセクションがあります。

変更 は、ワークスペースで変更され、Git にコミットする必要がある項目の数を示します。 更新プログラム には、Git ブランチで変更され、ワークスペースに更新する必要がある項目の数が表示されます。

各セクションでは、変更されたアイテムが状態を示すアイコンと共に一覧表示されます:

  • 新規
  • 変更済み
  • 削除済み
  • 競合
  • 同変更

パネルの上部の [更新] ボタン により、変更と更新の一覧が更新されます。

変更されたアイテムの状態を示すソース control panelのスクリーンショット。

コミット

  • 変更されたワークスペース内の項目は、[ 変更 ] セクションに一覧表示されます。 変更した項目が複数ある場合は、Git ブランチにコミットする項目を選択できます。
  • Git ブランチに対して更新が行われた場合、ワークスペースを更新するまでコミットは無効になります。

更新

  • コミット元に戻すのとは異なり、Update コマンドは常にブランチ全体を更新し、最新のコミットに同期します。 更新する特定の項目を選択することはできません。
  • ワークスペースと同じ項目の Git ブランチで変更が行われた場合、競合が解決されるまで更新は無効になります。

コミットと更新の方法について詳しくは、こちらをご覧ください。 更新プロセスと 競合を解決する方法について詳しくは、こちらをご覧ください。

支店

ソース control panelの Branches タブを使用すると、ブランチを管理し、ブランチ関連のアクションを実行できます。 次のセクションがあります。

  • 別のワークスペース ( 共同作成者以上) に分岐する: 新しいブランチワークスペースを作成するか、既存のブランチワークスペースの接続されたブランチを、ソース ワークスペースの最後のコミットに基づいて作成された新しい Git ブランチに切り替えます。
  • 新しいブランチをチェックアウト する (ワークスペース管理者である必要があります): ワークスペースで最後に同期されたコミットに基づいて新しいブランチを作成し、現在のワークスペースの Git 接続を変更します。 ワークスペースの内容は変更されません。
  • ブランチの切り替え(ワークスペース管理者、または 少なくとも共同編集者ロールを持つユーザーに Git ブランチの変更を許可 が有効な場合は、すべてのアイテムに対する書き込みアクセス権を持つメンバー/共同編集者): ワークスペースを別の新規または既存のブランチと同期し、選択したブランチの内容でワークスペース内のすべてのアイテムを上書きします。

ソースコントロールパネルのブランチアウトタブのスクリーンショット

  • 関連ブランチ: [関連ブランチ] タブには、選択して切り替えることができる関連ワークスペースの一覧も表示されます。 関連するワークスペースは、次の 2 つのいずれかです。
    1. 分岐ワークスペース
    2. 同じ組織、プロジェクト、リポジトリ、git フォルダーなど、現在のブランチと同じ接続プロパティがあります。 この機能を使用すると、現在の作業のコンテキストから関連するワークスペースに移動でき、Fabricワークスペースの一覧で検索する必要はありません。 関連するワークスペースを開くには、一覧で項目を選択します。

ユーザーが切り替えることができる関連ブランチの一覧を示すスクリーンショット。

詳しくは、分岐制限事項をご覧ください。

アカウントの詳細

[アカウントの詳細] タブには、ユーザーが接続しているGitHub アカウントの詳細が表示されます。 2つのセクションがあります。 上部のセクションには、Git プロバイダーとアカウント名が表示されます。 下部のセクションには、ワークスペースが接続されているリポジトリとブランチが表示されます。 現在、このタブは、GitHubに接続されているワークスペースでのみ使用できます。

GitHubアカウントの詳細は次のとおりです。

  • Git アカウントの詳細

  • プロバイダー

  • アカウント名

  • Git リポジトリ

  • ブランチ

 Git の詳細とリポジトリとブランチ名を示すソース control panelの [アカウント] タブのスクリーンショット。

考慮事項と制限事項

一般的な Git 統合の制限事項

  • Fabric の認証方法は、少なくとも Git の認証方法と同程度に強力である必要があります。 たとえば、Git で多要素認証が必要な場合、Fabric でも多要素認証が必要になります。
  • 現時点では、Analysis Services に接続されている Power BI データセットはサポートされていません。
  • 1 つの成果物でワークスペース ID を使用して Git にコミットした場合、同じ ID に接続されているワークスペースでのみ更新 (ファブリック ワークスペースに戻す) ことができます。 ブランチ アウトなどの機能にも影響するため、注意してください。
  • サブモジュールはサポートされていません。
  • ソブレンクラウドはサポート対象外です。
  • Fabricワークスペースには、最大1,000 個のFabricとPower BIアイテムを含めることができます (ワークスペースアイテムの制限を参照)。 この制限は、Git 統合によって管理されるすべての項目に適用されます。 ワークスペースがこの制限に近づく場合は、より小さな成果物セットに分割することを検討してください。各セットを個別のワークスペースに配置し、別の Git ブランチにリンクするか、1 つのブランチを異なるフォルダーに整理します。 Git ブランチがこの制限を超えた場合の同期動作の詳細については、「 ワークスペースの制限」を参照してください。
  • Azure DevOps は、有効な IP 条件付きAccess ポリシー検証 が有効になっている場合はサポートされません。
  • ワークスペースと Git リポジトリが 2 つの異なる地理的リージョンにある場合、テナント管理者は 複数の地理的なエクスポートを有効にする必要があります。
  • 組織で conditional access を構成している場合は、認証が想定どおりに機能するように、Power BI Serviceに同じconditions setがあることを確認します。
  • 次のコミット サイズ制限が適用されます。
    • Azure DevOps コネクタとサービス プリンシパルを使用して 25 MB。
    • 既定のシングル サインオン (SSO) Microsoft Entra ID アカウントを使用し、125 MB を Azure DevOps コネクタとユーザー プリンシパルで管理します。

GitHub Enterprise の制限事項

一部のGitHub Enterprise のバージョンと設定はサポートされていません。 次に例を示します。

  • custom domainを持つエンタープライズ サーバー GitHubは、インスタンスがパブリックにアクセスできる場合でもサポートされていません
  • プライベート ネットワークでホストされているエンタープライズ サーバーのGitHub
  • IP 許可リスト

Azure DevOpsからGitHub Enterpriseへの移行に関する考慮事項

チームで Fabric Git Integration を使用し、Azure DevOps から GitHub Enterprise への移行を評価する場合は、検証テストを実行して Git 統合機能が影響を受けないようにすることをお勧めします。 Fabric Git Integration は、基になる Git プロバイダー API に依存します。これは、前述のように、Azure DevOps と GitHub Enterprise の機能と制限が異なります。

Git 統合とごみ箱アイテムの回復動作の違い

Git 統合を使用すると、Git 操作とごみ箱の回復を組み合わせて削除されたアイテムが再作成または復元されるシナリオで、予期しない動作が発生する可能性があります。 これは、Git 操作 ([元に戻す] や [Git から更新] など) が新しいアイテム ID を割り当てて削除済みアイテムを再作成するのに対し、ごみ箱からアイテムを復元すると元のアイテム ID が保持されるために発生します。 その結果、異なる ID を持つ重複する項目がワークスペースに存在する可能性があります。これにより、Git 統合が期待どおりに動作しなくなったり、既存の依存関係に影響を与える可能性があります。

緩和策

Git Integration によって再作成された項目を削除します。 重複する項目が削除されると、Git 操作は正常に再開されます。

その他の注意事項

Git 統合では、項目定義のみが再作成され、項目データは復元されません。 これに対し、ごみ箱からアイテムを復元すると、アイテム定義とそのデータの両方が復元されます。

ワークスペースの制限事項

  • 接続、切断、ブランチの追加など、Git Repo への接続を管理できるのは、ワークスペース管理者だけです。
    接続すると、アクセス許可を持つすべてのユーザーがワークスペースで作業できるようになります。
  • テンプレート アプリがインストールされているワークスペースを Git に接続することはできません。
  • MyWorkspace は Git プロバイダーに接続できません。
  • ワークスペースには、最大 1,000 個のアイテムを含めることができます。 Git ブランチに 1,000 を超える項目が含まれている場合、ワークスペースへのコンテンツの同期は失敗します。 この制限を回避するには、artifactsをより小さなセットに分割することを検討してください。 各セットは、個別のワークスペースに配置し、異なる Git ブランチにリンクするか、単一のブランチ内の異なるフォルダーに編成する必要があります。 詳細については、 ワークスペース項目の制限に従ってください。

ブランチとフォルダーの制限事項

  • ブランチ名の最大長は 244 文字です。
  • ファイル名の完全パスの最大長は 250 文字です。 これらより長い名前は失敗します。
  • 最大ファイル サイズは 25 MB です。
  • フォルダー構造は、最大 10 レベルの深さまで維持されます。
  • Git 統合を使用してレポート/データセットをデプロイした後、サービスから .pbix としてレポート/データセットをダウンロードすることはお勧めしません。結果は信頼できないためです。 Power BI Desktop を使用して、レポート/データセットを .pbix としてダウンロードすることをお勧めします。
  • 項目の表示名にこれらの特性のいずれかが含まれている場合、Git フォルダーの名前は論理 ID (Guid) に変更され、次のように入力されます。
  • フォルダーを含むワークスペースを Git に接続する場合、その フォルダー構造 が異なる場合は、Git リポジトリに変更をコミットする必要があります。

ディレクトリ名の制限事項

  • Git リポジトリに接続するディレクトリの名前には、次の名前付け制限があります。

    • ディレクトリ名の先頭または末尾をスペースまたはタブにすることはできません。
    • ディレクトリ名には、次の文字を含めることはできません: "/:<>\*?|
  • アイテム フォルダー (アイテム ファイルを含むフォルダー) には、次の文字を含めることはできません: ":<>\*?|。 フォルダーの名前をこれらの文字のいずれかを含む名前に変更すると、Git はワークスペースに接続または同期できないため、エラーが発生します。

同期とコミットの制限事項

  • 同期できる方向は一度に 1 つだけです。 同時にコミットと更新をすることはできません。
  • 秘密度ラベルはサポートされていないため、秘密度ラベルを持つアイテムのエクスポートは無効化される可能性があります。 秘密度ラベルのない秘密度ラベルを持つ項目をコミットするには、 管理者にヘルプを依頼してください
  • 制限付きアイテムで動作します。 フォルダー内のサポートされていない項目は無視されます。
  • 名前の複製は許可されません。 Power BI で名前の重複が許可されている場合でも、更新、コミット、または元に戻すアクションは失敗します。
  • B2B はサポートされていません。
  • 競合の解決 は、Git で部分的に行われます。
  • Git へのコミット プロセス中に、Fabric サービスは、アイテム定義の一部ではないアイテム フォルダー内のファイルを削除します。 アイテム フォルダーにない無関係なファイルは削除されません。
  • 変更をコミットした後、自分が加えなかった予期しない変更が項目に加えられる場合があります。 これらの変更は意味的には重要ではなく、いくつかの理由で発生する可能性があります。 例:
    • 項目定義ファイルを手動で変更します。 これらの変更は有効ですが、エディターを使用して行った場合とは異なる可能性があります。 たとえば、Git でセマンティック モデル列の名前を変更し、この変更をワークスペースにインポートすると、次回セマンティック モデルに変更をコミットするときに、bim ファイルが変更済みとして登録され、変更された列が columns 配列の後ろにプッシュされます。 これは、bim ファイルを生成する AS エンジンが名前変更された列を配列の最後にプッシュするためです。 この変更は項目の動作には影響しません。
    • CRLF 改行を使用するファイルをコミットする。 このサービスでは LF (ライン フィード) 改行を使用しています。 CRLF 改行を含む項目ファイルが Git リポジトリにある場合、サービスからコミットすると、これらのファイルは LF に変更されます。 たとえば、デスクトップでレポートを開いた場合は、project ファイル (.pbip) を保存し、CRLF を使用して Git にアップロードします。
  • 拡張更新 API を使ってセマンティック モデルを更新すると、更新のたびに Git diff が行われます。