FabricでGit接続されたワークスペースを扱うと、ワークスペース内のアイテムとGitブランチ内のアイテムが同じ名前とタイプであっても、論理IDが異なる状況に遭遇することがあります。 この不一致はメタデータの上書き警告を引き起こし、どの論理IDを保持するかを決めなければなりません。
この記事では、論理 ID とは何か、競合が発生する理由、およびそれらを安全に解決する方法について説明します。
論理 ID とは
Fabric ワークスペースが Git ブランチに接続されている場合、ワークスペース内のすべての項目は、そのブランチで定義されている論理 ID に関連付けられます。 これらのIDは、Fabricワークスペース内の各アイテムの「アイデンティティ」を表しています。 論理 ID は、ワークスペース内の項目を Git ブランチ内の対応する項目に接続する、自動的に生成されるクロスワークスペース識別子です。 同じ論理IDを持つ項目は同一であると仮定します。
論理 ID と Fabric がソース管理の項目を表す方法の詳細については、 Git 統合のソース コード形式のドキュメントを参照してください。
論理 ID 競合とは何ですか?
論理 ID の競合は、名前と項目の種類が同じで、論理 ID が異なる 2 つの項目 (ワークスペース内と Git 接続ブランチ内の 1 つ) を Fabric が検出すると発生します。 論理 ID は Fabric 項目とその Git 表現の間の一意のバインド キーであるため、不一致は、どのバージョンを項目の "true" ID として扱うべきかを Fabric が認識していないことを意味します。
競合が検出されると、次のような [メタデータの上書きの確認] ダイアログが表示されます。
この競合は、ワークスペース項目の論理 ID がソース管理からのアイテムのバージョンとは異なっていることを示します。
操作を確認すると、ソース管理の論理 ID が、ワークスペース内の一致する項目の論理 ID を置き換えます。
競合につながる一般的なシナリオ
論理 ID の不一致は、次の場合に発生する可能性があります。
| シナリオ | 説明 |
|---|---|
| ワークスペースを空でない Git フォルダーに接続する | Git リポジトリに、名前と種類によってワークスペース項目と一致する項目が含まれているが、異なる論理 ID を保持している場合は、ワークスペース メタデータの上書きを確認するメッセージが表示されます。 |
| 異なるブランチに切り替える | ブランチを変更すると、ワークスペースのバージョンと同じ論理 ID を共有しない項目定義が取り込まれる場合があります。 |
| 接続されたブランチとは異なるブランチに基づいて新しいブランチにブランチアウトする | 特定の Git ブランチに既にマップされているワークスペースに、関連のない項目 ID の 2 番目の系列を導入します。 |
| アイテムを含む既存のワークスペースにブランチする | ワークスペースから既にアイテムを含む既存のワークスペースに分岐する際、Fabricはターゲットワークスペースのメタデータを元のワークスペースのブランチメタデータから作成した新たに接続されたブランチと整合させます。 |
論理 ID の競合の解決
競合が発生した場合は、ワークスペース メタデータを上書きするか、保持するかを決定する必要があります。
オプション 1: ワークスペースのメタデータを上書きする (Git バージョンを取得する)
上書きするか確認した場合は:
- ソース管理の論理 ID によって、ワークスペース内の既存の論理 ID が置き換えられます。
- ワークスペースメタデータが Git バージョンと一致するようになりました。
ワークスペースを Git ブランチに完全に合わせる場合は、このオプションを使用します。
既存の自動化への影響
ワークスペースのメタデータを上書きすることを選択すると、ワークスペース内の既存の論理 ID を Git からのバージョンに置き換えます。 これにより、項目を一貫して識別するために現在の論理 ID に依存する既存の自動化が中断される可能性があります。 これらのオートメーションは特定の項目 ID を参照するため、これらの論理 ID を変更すると、それらのワークフローの観点からワークスペース項目が効果的に "新しい" ようになります。 その結果、ダウンストリーム ジョブは、新しい ID を認識するように自動化ロジックが更新されるまで、項目の検索、更新のスキップ、または重複の生成に失敗する可能性があります。
オプション 2: 既存のワークスペース メタデータを保持する (ワークスペースのバージョンを保持する)
ワークスペースの論理 ID を保持する場合:
- 上書きを確認しないでください。
- ワークスペースに現在存在する論理 ID で Git リポジトリを更新します。
これを行うには、次の操作を行います。
- 別のブランチをチェックアウトまたはコミットし、ワークスペース メタデータを Git にプルする、または
- Gitで項目名を変更すると、Fabricはそれらを競合する更新ではなく、追加/削除操作として扱います。