Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5/5

GodotEngine4 用の自作アドオン開発するために、利用者が res://adddons フォルダなどに配置するアドオン部分 (ScUtil) と、それを開発するプロジェクト部分 (ScUtilDev) の2つGit リポジトリを作成し、それらを Git サブモジュール連携してバージョン管理する構成を作成します。
※基本的に Git 操作は、シェル拡張でエクスプローラ上で操作できる Git クライアントソフト TortoiseGit を用い、一部はコマンドプロンプトで直接 Git コマンドを使用します。
※ Git-2.49.0 (64 bit) を使用します。
※ TortoiseGit-2.17.0.2-64bit を使用します。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理するコンポーネント図 (plantUML)
Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理するフォルダ構成1

パート5では、今まで複数の Git リポジトリを連携して構築してきた GodotEngine4 プロジェクトフォルダに、ユニットテストの公式アドオン Gut公式ガイドに沿ってサブモジュールとして配置して、 GodotEngine4 エディタでプロジェクトを開いてテストが正常に実行されることを確認します。

前回の記事

GitHub の Gut アドオンをサブモジュールとして追加

Git ローカルリポジトリを作成した GodotEngine4 プロジェクトフォルダをエクスプローラで開いて、右クリックで表示されるメニュー「TortoiseGit」→「サブモジュールを追加」を選択して、ユニットテストの公式アドオン Gut を thrid_party/Gut フォルダにサブモジュールとして追加します。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)1

Gut の公式ガイドに沿って Git サブモジュールとして GodotEngine4 のプロジェクトフォルダに配置する手順については、以下の記事を参照してください。

https://compota-soft.work/wp1/wp-admin/post.php?post=57148&action=edit

third_party/Gut フォルダに、GodotEngine のユニットテストの公式アドオン Gut をサブモジュールとして追加しました。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)2
git.exe submodule add   -- "https://github.com/bitwes/Gut.git" "third_party/Gut"
Cloning into 'G:/Dev/Godot4GD/SakuraCrowd/ScLibProject/ScUtilDev/third_party/Gut'...

成功 (4766 ms @ 2025/09/08 9:27:35)

.gitmodules ファイルには、Gut の指定したリポジトリのパス (url) と、追加先のフォルダのパス (path) の情報を持つセクション追加されました。

[submodule "addons/sc-util"]
	path = addons/sc-util
	url = G:/Dev/Godot4GD/SakuraCrowd/ScLibProject/remote/sc-util.git
[submodule "third_party/Gut"]
	path = third_party/Gut
	url = https://github.com/bitwes/Gut.git

third_party フォルダに .gdignore という名前の空のファイルを入れて、GodotEngine4 エディタが読み込まないようにします。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)3

これをしないと、 third_party 内の Gut の project ファイル(.godot) を読み込み、以下の警告(別のプロジェクトの検知)が発生します。

editor/editor_file_system.cpp:2828 - Detected another project.godot at res://third_party/Gut. The folder will be ignored.

Godot のバージョンにあった Gut プラグインのバージョンに変更

GitHub の Gut リポジトリからサブモジュールとして追加した Gut は、現行の開発中の状態かもしれません。

開発中の状態でも動作はしますが、 Invalid UID の警告GodotEngine4 エディタを開くと出力される可能性があります。

TODO: 記事

Gut をサブモジュールとして追加した場合は、Git のタグを指定して、任意のバージョンをチェックアウトします。
Gut サブモジュールを追加したフォルダ(例:third_party/Gut/ )をエクスプローラで開いて、右クリックで表示されるメニュー「TortoiseGit」→「切り替え / チェックアウト」を選択します。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)4

「切り替え / チェックアウト」ダイアログで、「切り替え先」枠の「タグ」ラジオボタン選択して、右側のリストから使用するバージョン(例:v9.4.0)を選択します。
※バージョンで GodotEngine の対応バージョンが変わります。 v9.4.0 は GodotEngine 4.3 に対応しています。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)5

変更しないで使用するので「オプション」枠の「新しいブランチを作成」チェックはずして、 OK ボタンを押ます。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)6

サブモジュールとして GodotEngine4 プロジェクトのサブフォルダに追加した Gut の状態を指定したバージョン(例:v9.4.0 )に置き換えました。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)7
git.exe checkout --end-of-options v9.4.0 --
Note: switching to 'v9.4.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

git switch -c <new-branch-name>

Or undo this operation with:

git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at ca6cf20 9.4.0 documentation changes (#720)

成功 (719 ms @ 2025/09/08 15:55:06)

シンボリックリンクの作成

Gut のインストールガイドにあるように、プロジェクトの addons/ フォルダに、サブモジュールのアドオンのフォルダ(例:third_party/Gut/addons/gut/) へのディレクトリ用のシンボリックリンク gut を作成します。

third_party フォルダにサブモジュールとして配置した Gut の Gut/addons/gut/ のシンボリックリンク(ディレクトリ)を addons/gut に作成する手順については、以下の記事を参照してください。

 https://compota-soft.work/wp1/wp-admin/post.php?post=58338&action=edit

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)8
G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons>mklink /d gut ..\third_party\Gut\addons\gut
gut <<===>> ..\third_party\Gut\addons\gut のシンボリック リンクが作成されました

G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons>dir
 ドライブ G のボリューム ラベルは ボリューム です
 ボリューム シリアル番号は 9691-AE5E です

 G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons のディレクトリ

2025/09/08  11:26    <DIR>          .
2025/09/08  11:26    <DIR>          ..
2025/09/08  11:26    <SYMLINKD>     gut [..\third_party\Gut\addons\gut]
2025/09/07  16:10    <DIR>          sc-util
               0 個のファイル                   0 バイト
               4 個のディレクトリ  2,380,344,578,048 バイトの空き領域

G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons>

GodotEngine エディタでプロジェクトを開いて動作確認

テストを実行して動作を確認するため、テストコードなどの gd スクリプトファイルの入ったフォルダを追加します。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)9

GodotEngine4 を起動して、「プロジェクトマネージャー」ウィンドウの「インポート」ボタンを押して、プロジェクトを選択します。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)10

「インポートして編集」ボタンを押して、プロジェクトを開きます。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)11

起動時に、出力ボトムパネルにエラー・警告は表示されませんでした。
ファイルシステムドックの gut シンボリックリンクも、 thrid_party/Gut/addons/gut ディレクトリとリンクしています。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)12

メニュー「プロジェクト」→「プロジェクト設定」を選択して表示されるダイアログの「プラグイン」タブを選択して、Gut プラグインの「有効」のチェックボックスにチェックを入れます。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)13

以上でユニットテスト用の公式アドオン Gut プラグインが有効になりました。

Gut によるユニットテストの実行

プロジェクト内の、自作アドオンの .gd ファイル内の関数を、プロジェクト内に追加したテストコードでテストして、複数のリポジトリをサブモジュールで連携したプロジェクト正常に動作することを確認します。

ボトムパネルに追加された GUT タブを選択します。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)14

Gut ボトムパネルの右側の Include Subdirs の 0 番目に、テストコードを記述した gd ファイルのあるフォルダ(例:res://test/unit )を指定して、チェックボタンを有効にします。

その後、Gut ボトムパネルの左上の Run All ボタンで、全てのテストコードを実行します。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)15

テストの結果がウィンドウに表示され全てのテストに合格しました。
これにより、プロジェクトのファイル群が正常に配置されていることが確認できました。

Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)16
Godot4 Gitサブモジュール対応 アドオンを別リポジトリで管理する5(Godotプロジェクトの動作確認)17

まとめ

  • GodotEngine4 プロジェクトに GutGitサブモジュールとして追加しました。
  • サブモジュールとして追加した Gut を、使用するバージョンのタグを指定して TortoiseGit でチェックアウトして、指定したバージョンのリリースの状態に置き換えました。
  • GodotEngine4エディタでプロジェクトを開いて、プロジェクト設定で Gut を有効にして、テストを実行して正常に動作することを確認しました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました