Unity ライブラリを Git submodule で管理する
はじめに
Unity で長期的なプロジェクトやライブラリを作成する際、 ソースコードが公開されている Unity ライブラリや社内ライブラリを使う場合に、 Git submodule でコードを取り入れるようにしています。
自分の Git リポジトリにライブラリのコードを入れることに比べて、以下のようなメリットがあります。
この記事では、自分がどのように Git submodule を使ってプロジェクトを構成しているかを紹介します。
フォルダ構成と仕組み
リポジトリのルートフォルダの中の _external
フォルダにライブラリのコードが入ります。
このままでは自分の Unity プロジェクトから使えないため、
Assets
フォルダ内に必要なライブラリのフォルダへのシンボリックリンクを作成します。
シンボリックリンクをはるためのバッチファイルやツールをルートフォルダの中の _tools
フォルダに格納します。
シンボリックリンクは go-symlink-creator
という自作のツールを使って作成しています。
このツールを使えば、どこからどこにリンクをはるのかという定義を yaml ファイルで行えます。
プロジェクトのセットアップ
プロジェクトをセットアップする際の手順を紹介します。
まずは、リポジトリのルートフォルダに _external
, _tools
フォルダを作成します。
_external
フォルダへライブラリを追加
_external
フォルダには、Git submodule でライブラリをクローンします。
> git submodule add <repository>
利用するブランチやタグを変更する場合は、クローンしたフォルダ内で変更します。
_tools
フォルダへシンボリックリンク作成ツールを追加
Releases · HoloLabInc/go-symlink-creator · GitHub
上記ページから go-symlink-creator.exe
をダウンロードし、_tools
フォルダに保存します。
また、以下のような SymlinkSettings.yaml
ファイルを作成し、_tools
フォルダに保存します。
src はリンク先のファイル・フォルダの親フォルダ、dest はリンクを作成するフォルダ、target はリンクを作成するファイル・フォルダです。
symlinks: - src: \path\to\source\folder dest: \path\to\destination\folder target: - FolderA - FolderB include-meta-file: true # meta ファイルのリンクも作成する
最後に、クリックだけで実行できるようにバッチファイル (createSymlink.bat
) を作成します。
@echo off cd /d %~dp0 call go-symlink-creator SymlinkSettings.yaml pause
このバッチファイルを実行することで、シンボリックが作成されます。
シンボリックリンクを ignore する
シンボリックリンクのファイルは Git の管理対象から外します。
.gitignore ファイルを作成し、シンボリックリンクのファイルを指定してください。
以上でプロジェクトのセットアップは完了です。
プロジェクトをクローンする場合
上記のセットアップを行ったプロジェクトをクローンする場合は、 リポジトリをクローンした後にサブモジュールのクローンを実行します。
> git clone <repository> > cd <repository> > git submodule init > git submodule update
その後、シンボリックリンクを作成するバッチファイルを実行します
> _tools\createSymlink.bat
MRTK (MixedRealityToolkit-Unity) を使う場合
HoloLens アプリ開発で利用される MRTK を、Git submodule で利用する手順を紹介します。
上記で紹介した手順の具体例となります。
まずは、リポジトリのルートフォルダに _external
, _tools
フォルダを作成します。
_external
フォルダへ MRTK を追加
_external
フォルダで以下を実行します。
> git submodule add git@github.com:microsoft/MixedRealityToolkit-Unity.git
利用するバージョンを指定します。
例えば、MRTK v2.4.0 を使う場合は以下のようにします。
> cd MixedRealityToolkit-Unity > git checkout v2.4.0
_tools
フォルダへシンボリックリンク作成ツールを追加
go-symlink-creator.exe
と createSymlink.bat
については同じ内容のため省略します。
SymlinkSettings.yaml
は以下のようになります。
symlinks: - create-dest-folder: true # dest フォルダ (Assets\MRTK) が存在しなければ作成する include-meta-file: true src: ..\_external\MixedRealityToolkit-Unity\Assets\MRTK dest: ..\Assets\MRTK target: - Core - Providers - SDK - Services - Tools - Extensions # Examples を利用しない場合は削除する - Examples
シンボリックリンクを ignore する
Assets フォルダに .gitignore
ファイルを作成し、以下の内容を記入します。
/MRTK /MRTK.meta
おわりに
以上、自分が普段行っている Unity ライブラリを Git submodule で管理する手順の紹介でした。