kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu Git その266 - サブモジュールのコミットIDの活用例

コミットIDの活用例

  前回記述した通り、「スーパープロジェクト」から「サブモジュール」をチェックアウトすると、「スーパープロジェクト」が管理している「サブモジュール」の「コミットID」が指す「コミットオブジェクト」から、プロジェクトのファイル群をチェックアウトします。

  また、「サブモジュール」の「HEAD」と「サブモジュール」の「コミットID」は、別々に管理されます。
   
  これにより、「サブモジュール」の「リモートリポジトリー」が別のユーザーにより更新されたとしても、常に「スーパープロジェクト」が期待する「サブモジュール」のプロジェクトのファイル群をチェックアウトすることができます。

  1.サブモジュールの利用形態

    「サブモジュール」は、「スーパープロジェクト」と関係性の強いリポジトリーを「スーパープロジェクト」で一括管理する仕組みです。

    ここでは例として、以下のような「サブモジュール」の利用形態があるとします。


リポジトリーの種類 概要
スーパープロジェクト アプリ本体(実行可能ファイル)
サブモジュール アプリで使用するライブラリー

    「サブモジュール」は「スーパープロジェクト」から生成されるアプリで使用するライブラリーであり、アプリが動作するのに必須のライブラリーです。
    このライブラリーの役割は、データの処理です。

    また、このライブラリーは、異なるのリポジトリーで生成されるアプリでも使用されています。

    このアプリは日本語に翻訳されておらず、あるユーザーがこのアプリの翻訳作業を行うとします。

    ちなみに「サブモジュール」の「リモートリポジトリー」は、以下のようになっています。


  2.スーパープロジェクトのチェックアウト

    ユーザーはアプリの翻訳作業を行うため、「スーパープロジェクト」をクローンしました。
    また、アプリをビルドして動作確認を行うため、「サブモジュール」もクローンしました。

    この時「Git」は、「スーパープロジェクト」が管理している「コミットID」が指す「コミットオブジェクト」から、各「サブモジュール」をチェックアウトします。


    翻訳作業に必要なファイルは、「スーパープロジェクト」からチェックアウトしたファイル群の中にあります。
    これでユーザーはアプリの翻訳作業を行うことができます。

    作業が終わったら、「スーパープロジェクト」の「リモートリポジトリー」に反映します。

  3.サブモジュールのリモートリポジトリーが更新されていたら?

    「2.」のタイミングで、「サブモジュール」の「リモートリポジトリー」が別のユーザーによって更新されていたとします。


    しかもその更新は、「スーパープロジェクト」が生成するアプリと互換性がなく、別途対応作業が必要です。(アプリのビルドができない状態)
    ただし、新しいライブラリーへの対応による翻訳作業の追加はありません。

    もし「サブモジュール」の仕組みを利用せず、その対応作業が別のユーザーの担当だった場合、アプリの翻訳作業を行うユーザーは、アプリの動作確認を行うことができません。

    以前のコミットからチェックアウトすることも可能ですが、どのコミットからチェックアウトすればよいのか、確認作業が必要になります。

   従って、翻訳作業以外の作業も必要になってしまいます。

  4.コミットIDを利用する

    「3.」のような状況になっても、各「サブモジュール」をどの「コミットオブジェクト」からチェックアウトすればよいのか「スーパープロジェクト」が把握しています。


    「スーパープロジェクト」から各「サブモジュール」をチェックアウトすれば、アプリの動作確認が可能なプロジェクトのファイル群が使用できます。

     アプリの翻訳作業を行うユーザーは、アプリの翻訳を行い、アプリの動作確認を行うことができます。

  5.コミットIDの更新

    「3.」の後、別のユーザーがアプリを新しいライブラリーに対応する作業を行いました。

    新しいライブラリーとセットでビルドすることが前提になるため、そのユーザーは「スーパープロジェクト」で管理している「コミットID」を更新し、「スーパープロジェクト」の「リモートリポジトリー」に反映します。


    これで、「スーパープロジェクト」をクローンした際、新しいライブラリーに対応したアプリをビルドできるようになります。


Git
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Linux その429 - GNOME 向けアプリとアップデートの紹介・ RSS リーダーのインポート機能や映画マトリックスのデスクトップ効果など
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
  • Ubuntu 26.10 その24 - Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表
    Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表 Ubuntu 26.10 の公式壁紙と壁紙コンペの結果が発表されました。
  • Linux その428 - KDE Plasma で実装予定の新機能や改善・マウスの中央ボタンの機能改善やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Linux その426 - GNOME 向けアプリとアップデートの紹介・AI アシスタントアプリやメールスイートなど
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Ubuntu 26.10 その23 - x86-64-v3 に対応したデイリービルドのディスクイメージが利用可能に
    x86-64-v3 に対応したデイリービルドのディスクイメージが利用可能に x86-64-v3 に対応した Ubuntu Desktop 26.10 のデイリービルドのディスクイメージが利用可能になりました。
  • Ubuntu 26.10 その22 - Dracut のパフォーマンス改良・初期 RAM ディスクのサイズ削減と生成時間の短縮
    Dracut のパフォーマンス改良 Ubuntu 26.10 では Dracut のパフォーマンス改良作業が行われています。 その過程が以下で紹介されています。
  • Lubuntu その28 - Lubuntu 26.04 LTS の新機能と変更点・既知の問題
    Lubuntu 26.04 LTS の新機能と変更点 リリースノートから Lubuntu 26.04 LTS の新機能と変更点を紹介します。
記事のピックアップ
オプション