Gitクローン、サブモジュール更新、zip DL・展開を自動化するスクリプト例

Windows 10 など標準で利用できる PowerShell を用いて、作成した空のフォルダに、Git リモートリポジトリからのクローン、 GitHub に公開されているリポジトリからの Git サブモジュールの配置、シンボリックリンクの作成、zip のダウンロード・展開・移動、不要なファイルなどの削除一連の処理管理者権限で行い、 GodotEngine4 用のプロジェクトを自動的に構築するスクリプト例と結果を紹介します。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例2

※ Windows PowerShell PSVersion 5.1.19041.6093 を使用します。
※バッチ、スクリプトは自己責任でご使用ください。

スクリプト例

以下のバッチファイルで、管理者権限で後述する setup.ps1 PowerShell スクリプトを実行します。

PowerShell スクリプトをダブルクリックで実行する方法がわからないので、バッチファイルを経由します。
参照:Powershellを楽に実行してもらうには #PowerShell – Qiita

REM 文字化けやコメントの「を」の誤認を防ぐため Shift-JIS CRLF で保存してください。
@echo off

REM 管理者かどうか判定し、違うなら再起動(管理者として)
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 管理者権限で再実行します...
    powershell -Command "Start-Process '%~f0' -Verb runAs"
    exit /b
)
echo 管理者として実行されています。
echo setup.ps1 を実行しています…
powershell -NoProfile -ExecutionPolicy Unrestricted -File "%~dp0setup.ps1"
echo 完了しました!
pause > nul
exit

以下は、 Git リモートリポジトリや GitHub などのインターネットのサイトからダウンロードして、GodotEngine4 用の自身のプロジェクトを、自動的に構築する PowerShell スクリプトの例です。

処理の説明はコメントを参照してください。

git clone によるクローン元のリモートリポジトリPC 内(例では G:\Dev\remotes\godot\SakuraCrowdGodotLib)を指していますが、これを GitHub で公開しているリポジトリなどに変更すれば、インターネットが利用できるさまざまな環境で使えると思います。

最後の行の Install-GodotGitPlugin は、その直前に定義した同じ名前の関数を呼び出しています。
関数にしたのは、スコープを分けて、パスを格納する変数をローカルで扱うためです。

# クローンを作成する空のフォルダを作成します。
Write-Host "Creating Project Folder..."
$projectDir = "$PSScriptRoot\project"
if (-Not (Test-Path $projectDir)) {
	New-Item -Path $projectDir -ItemType Directory | Out-Null
}
# リモートリポジトリからクローンを作成します。
Write-Host "git clone..."
git clone G:\Dev\remotes\godot\SakuraCrowdGodotLib $projectDir
# クローンを作成したフォルダに移動します。
Set-Location $projectDir
# サブモジュールを取得します。
Write-Host "git submodule init/update..."
git submodule init
git submodule update
# シンボリックリンクの設定を有効にします。
Write-Host "git config --local core.symlinks true..."
git config --local core.symlinks true
# シンボリックリンクを個別に作成します。(クローン時の同名のファイルは削除してから行います)
Write-Host "creating symbolic link..."
Remove-Item -Path "addons\gut" -Force
git checkout --force main -- addons/gut
# GitHub の Releases ページで公開されているアドオンをダウンロード・解凍・配置します。
## godot-git-plugin-v3.1.1
Write-Host "installing godot-git-plugin-v3.1.1 ..."
function Install-GodotGitPlugin{
	Write-Host "  downloading..."
	$addonsPath = Join-Path -Path $projectDir -ChildPath "addons"

	# 指定した URL から zip ファイルをダウンロードして、指定したフォルダに保存します。
	# 指定したフォルダがない場合は作成します。
	$zipURL = "https://github.com/godotengine/godot-git-plugin/releases/download/v3.1.1/godot-git-plugin-v3.1.1.zip"
	$zipFileName = "godot-git-plugin-v3.1.1"
	$zipFileNameExt = $zipFileName + ".zip"	
	try {
		Invoke-WebRequest -Uri $zipURL -OutFile $zipFileNameExt
	} catch {
		Write-Host "    error!: download failed"
		throw "Download failed for $zipURL"
	}
	if (-Not (Test-Path -Path $addonsPath)) {
	    New-Item -ItemType Directory -Path $addonsPath | Out-Null
	}

	Write-Host "  expanding archive..."
	# zip ファイルを解凍します。
	$expandArchivePath = Join-Path -Path $projectDir -ChildPath $zipFileNameExt
	Expand-Archive -Path $expandArchivePath -DestinationPath $addonsPath -Force

	Write-Host "  move plugin folder..."
	# 解凍した中から必要なフォルダ($pluginPath)をプロジェクトの addons\ に配置します。
	$pluginPath = Join-Path -Path $zipFileName -ChildPath "addons\godot-git-plugin"
	$moveSrcPath = Join-Path -Path $addonsPath -ChildPath $pluginPath
	$moveDstPath = Join-Path -Path $addonsPath -ChildPath "godot-git-plugin"
	Move-Item -Path $moveSrcPath -Destination $moveDstPath -Force

	Write-Host "  delete plugin zip folder..."
	# 解凍した不要な部分のフォルダを削除します。
	$removePath = Join-Path -Path $addonsPath -ChildPath $zipFileName
	Remove-Item -Path $removePath -Recurse -Force
	# 解凍元の zip ファイルを削除します。
	Remove-Item -Path $expandArchivePath -Force
}
Install-GodotGitPlugin

上記のスクリプトでは、GodotEngine4 エディタ上で Git 管理を行うアドオン godot-git-plugin v3.1.1 の zip ファイルを GitHub のリポジトリの Releases ページからダウンロードします。

スクリプトの実行と結果

PowerShell のファイルを .ps1 拡張子で保存したものをバッチファイルから呼び出して実行します。

run_setup.bat をダブルクリックで起動すると、管理者権限で起動するかを UAC (ユーザアカウント制御)の画面で尋ねられるので同意して進めると、setup.ps1 が管理者権限で呼び出されます
管理者権限は、チェックアウト時に Gitシンボリックリンクを作成するために必要です。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例1

Invoke-WebRequest コマンドレットで、zip ファイルをダウンロードする際には、青色のメッセージ欄が表示されました。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例2

数秒で処理が完了しました。何かキーを押すとコマンドプロンプトは閉じます。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例3
C:\Windows\system32>REM 文字化けやコメントの「を」の誤認を防ぐため Shift-JIS CRLF で保存してください。
管理者として実行されています。                                                                     setup.ps1 を実行しています…                                                                       Creating Project Folder...                                                                         git clone...                                                                                       Cloning into 'G:\Dev\Godot4GD\SakuraCrowd\tmp\5\project'...                                        done.
git submodule init/update...
Submodule 'third_party/Gut' (https://github.com/sakura-crowd/Gut.git) registered for path 'third_party/Gut'
Cloning into 'G:/Dev/Godot4GD/SakuraCrowd/tmp/5/project/third_party/Gut'...
Submodule path 'third_party/Gut': checked out '5043bfe1f3bc6e32ba3dd181ee8b99fe088c70a4'
git config --local core.symlinks true...
creating symbolic link...
installing godot-git-plugin-v3.1.1 ...
  downloading...
  expanding archive...
  move plugin folder...
  delete plugin zip folder...
完了しました!

処理ごとの関連記事

以下は、前述したバッチ、スクリプトの処理に関する記事です。

作成されたプロジェクトフォルダの確認

スクリプトを実行すると project フォルダが同じフォルダ内に作成されています。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例4

作成された project フォルダ内に、リモートリポジトリのプロジェクトフォルダの構成がクローンされています。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例5

外部のリポジトリをも、プロジェクト内にサブモジュールとして配置されています。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例6

そのサブモジュールのアドオン用のフォルダへのシンボリックリンクも、作成されています。

シンボリックリンクの作成は、リンク先がないと失敗してただのファイルとして作成されるので、リンク先であるサブモジュールを取得したあとに、その前に作成が失敗した同名のファイルを削除してから再びチェックアウトして、シンボリックリンクとして作成しています。
※シンボリックリンクは管理者権限がないと作成できません。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例7

コマンドプロンプトの dir コマンドで SYMLINKD と表示され、シンボリックリンクであることを確認できます。
シンボリックリンクの名前(例では gut)のあとには [] 内にリンク先の相対パスも表示されています。

Microsoft Windows [Version 10.0.19045.6216]
(c) Microsoft Corporation. All rights reserved.

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

 G:\Dev\Godot4GD\SakuraCrowd\tmp\5\project\addons のディレクトリ

2025/08/23  11:57    <DIR>          .
2025/08/23  11:57    <DIR>          ..
2025/08/23  11:57    <DIR>          godot-git-plugin
2025/08/23  11:57    <SYMLINKD>     gut [..\third_party\Gut\addons\gut]
               0 個のファイル                   0 バイト
               4 個のディレクトリ  2,402,432,716,800 バイトの空き領域

G:\Dev\Godot4GD\SakuraCrowd\tmp\5\project\addons>

ダウンロードした zip ファイルも展開されて、必要なアドオンの部分が addons フォルダに配置されました。

Git クローン、サブモジュール、 zip DL・展開で Godot プロジェクトを自動構築するスクリプト例8

まとめ

Windows 10 など標準で利用できる PowerShell を用いて、作成した空のフォルダに、Git リモートリポジトリからのクローン、 GitHub に公開されているリポジトリからの Git サブモジュールの配置、シンボリックリンクの作成、zip のダウンロード・展開・移動、不要なファイルなどの削除一連の処理管理者権限で行い、 GodotEngine4 用のプロジェクトを自動的に構築するスクリプト例と結果を紹介します。

参照サイト 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をコピーしました