モノレポと Git Submodules
モノレポとマルチリポジトリ構成のトレードオフと、Git submodules によってあるリポジトリを別のリポジトリ内に組み込む方法を学びます。
「モノレポと Git Submodules」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
MonorepoとMulti-repo
monorepoは、複数のプロジェクトを1つのリポジトリに保存します。multi-repo構成では、プロジェクトごとに独自のリポジトリを保持します。どちらも大規模な開発で一般的です。
チームがMonorepoを選ぶ理由
Monorepoでは、次のことを簡単に行えます。
- プロジェクト間でコードを共有する
- 境界をまたいだリファクタリングをアトミックに行う
- 1つのCIと1つのバージョニング方式を使う
Monorepoの課題
大規模なMonorepoは非常に大きくなり、クローンやCIが遅くなることがあります。sparse checkoutやビルドキャッシュなどのツールを使うと、これを管理しやすくなります。
サブモジュールとは
サブモジュールは、特定のコミットの状態で別のリポジトリに埋め込まれた、独立した Git リポジトリです。外側のリポジトリでは、内側のリポジトリのどのコミットを使用するかを管理します。
サブモジュールの追加
git submodule addを使うと、外部リポジトリを指定したパスに埋め込めます。
git submodule add https://github.com/org/shared-lib libs/shared.gitmodules ファイル
Git は、各サブモジュールのパスと URL を、リポジトリのルートにある追跡対象の.gitmodulesファイルに記録します。
[submodule 'libs/shared']
path = libs/shared
url = https://github.com/org/shared-libサブモジュールを含めたクローン
通常のクローンでは、サブモジュールのフォルダーは空のままになります。サブモジュールも取得するには、recursive フラグを使用します。
git clone --recurse-submodules https://github.com/org/app既存のサブモジュールの初期化
すでにクローン済みの場合は、init と update を使ってサブモジュールの内容を取得します。
git submodule update --init --recursiveサブモジュールの更新
サブモジュールは特定のコミットに固定されます。最新の状態に移行するには、サブモジュール内で更新を行い、親リポジトリで新しいポインターをコミットします。
git submodule update --remote libs/shared
git add libs/shared
git commit -m 'Bump shared lib'サブモジュールとサブツリーの比較
git subtreeは、別のリポジトリの内容を直接マージする代替手段です。コミットに固定されたポインターの複雑さを避けられる一方で、明確な分離は失われます。
アプローチの選択
密接に連携するプロジェクトにはモノレポを、共有しつつ独立したバージョンで管理するライブラリの埋め込みにはサブモジュールを、チームが完全に自律している場合にはマルチリポジトリを使用します。
クイックチェック
モノレポとサブモジュールについての理解度を確認します。
まとめ
モノレポとサブモジュールについて学びました。
- モノレポは複数のプロジェクトを一元管理し、マルチリポジトリではプロジェクトを分離します
- サブモジュールは
.gitmodulesを介して、特定のコミットに固定されたリポジトリを埋め込みます --recurse-submodulesを付けてクローンします- サブツリーはリポジトリを埋め込む別の方法です
よくある質問
「モノレポと Git Submodules」レッスンは無料ですか?
はい。「モノレポと Git Submodules」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「モノレポと Git Submodules」で何を学びますか?
モノレポとマルチリポジトリ構成のトレードオフと、Git submodules によってあるリポジトリを別のリポジトリ内に組み込む方法を学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「モノレポと Git Submodules」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- IDEと開発ツールでのGit
- エンタープライズ向けGitソリューション
- 大規模チーム向けGitのスケーリング
- モノレポと Git Submodules