ProjectY が ProjectX について何も知らなくても生きていける場合 (これは X のプラグインである可能性があります)、それはスーパープロジェクトではありません。
何らかの形で X を完成させる必要がある場合、はい、ツリー内で X を参照するためにスーパープロジェクトである可能性があります (サブモジュールの真の性質で説明されているように)。
コンポーネントベースのアプローチでは、真のスーパープロジェクトは、プロジェクト全体が機能するために必要な正確な構成 (つまり、リビジョンのリスト) を記録するためにProjectYとProjectX の適切なバージョンを参照する 3 番目のプロジェクトになります。
OP は正しい質問を追加します: 依存関係 (X に対する Y) をどこに保存しますか?
コンポーネントベースのアプローチを採用し、ProjectZ スーパープロジェクトがあり、ProjectY がビルドするために ProjectX に依存している場合、ProjectX を ProjectY のリポジトリにサブモジュールとして含めるのではなく、ProjectZ にのみ含めますか?
これは、ProjectY を単独でビルドすることができず、(雄弁でないため) 一種の「暗黙のサブモジュール」になっていることを意味します。
コンポーネントが 2 つしかなく、一方が他方に依存している場合は、ProjectX を ProjectY のサブモジュールとして直接宣言できます。
ただし、ProjectY を単独でビルドできない場合、それは「完全な」(「自律型」のような) プロジェクトではありません。
したがって、グローバルな親 "ProjectZ" には、その依存関係情報を ProjectY の外に格納する利点があります。
- ProjectZ ルートから直接、各モジュール パスをより見やすく維持します (ProjectX を潜在的に ProjectY の奥深くに埋めて、その依存関係を ProjectY クライアントから見えにくくするのではなく)。
- ProjectX のバージョンを統一する (複数のモジュールが ProjectX を必要とする場合、ProjectZ でそれを 1 回参照することで、他のすべてのモジュールが使用する必要がある ProjectX の「1 つの公式バージョン」を明確に宣伝する)