Programming Serendipity

気まぐれに大まかに生きるブログ

Unity開発向けGit LFS 追跡対象リスト

この記事はさいたまげーむす Advent Calendar 2016 10日目の記事です。

開発に必須のGit。ゲーム開発ではリソースが大きいことからリポジトリのサイズが肥大化しがちです。リポジトリのサイズに制限をかけているサービスも多く、例えばBitBucketでは2Gを超えると問答無用でプッシュを受け付けなくなってしまいます。これを解決するのは結構しんどいです(体験談)

このような問題への解決策として注目を集めてきているGit LFS(Large File Storage)をご存知でしょうか。これは、ユーザー側で指定した拡張子を持つファイルを別サーバーに置いて、本線のリポジトリにはそのリソースへのポインタだけを持つことでリポジトリ本体のサイズを抑えるもので、無料で使えます(偉大な開発チーム様に感謝)。

LFSを使うための準備としては、↓からGit LFSのクライアントをインストールするだけで完了します。

git-lfs.github.com

サイトにLFSにトラックさせる方法が書いてありますが、1つ1つコマンドを打つのは面倒ですから、スクリプトを用意しました。こちらです。

# init
git lfs install

# images
# https://docs.unity3d.com/Manual/ImportingTextures.html
git lfs track *.png
git lfs track *.bmp
git lfs track *.gif
git lfs track *.jpg
git lfs track *.jpeg
git lfs track *.psd
git lfs track *.tiff
git lfs track *.tga
git lfs track *.iff
git lfs track *.pict

# audio
# https://docs.unity3d.com/Manual/AudioFiles.html
git lfs track *.wav
git lfs track *.mp3
git lfs track *.ogg
git lfs track *.aiff
git lfs track *.aif
git lfs track *.mod
git lfs track *.it
git lfs track *.s3m
git lfs track *.xm

# movie
# https://docs.unity3d.com/Manual/class-MovieTexture.html
git lfs track *.mp4
git lfs track *.avi
git lfs track *.mov
git lfs track *.mpg
git lfs track *.mpeg
git lfs track *.asf

# fonts
# https://docs.unity3d.com/Manual/class-Font.html
git lfs track *.ttf
git lfs track *.otf

# 3D models
# https://docs.unity3d.com/Manual/3D-formats.html
git lfs track *.fbx
git lfs track *.dae
git lfs track *.3ds
git lfs track *.dxf
git lfs track *.obj
git lfs track *.max
git lfs track *.ma
git lfs track *.mb

# Android
git lfs track *.a
git lfs track *.so

# library
git lfs track *.dll

# archives
git lfs track *.zip
git lfs track *.rar
git lfs track *.tar
git lfs track *.gz
git lfs track *.lzh
git lfs track *.7z

あとなんか入れたいのあれば適当に追加しましょう。

これをlfs.shとでも名前を付けて保存し、Unityプロジェクトの中に入れ、Windowsなら右クリックのGit Bashから(コマンドプロンプトからも打てるようにしてあるならそこからでも)、

chmod +x lfs.sh
./lfs.sh

と打つと実行されます。

ちなみに↑の意味は、デフォルトの状態ではセキュリティ上の理由からスクリプトは実行できないようになっているので、スクリプト単位で許可を与えるためにchmod(Change Mode)コマンドでExecute(x)権限をプラス(+)して、そのあとに実行する、という意味です。 これであとは普通にコミットするだけで重いファイルは別サーバーへ飛んでいきます。
するとあら不思議、残るファイルはスクリプトとメタファイルなどテキスト系のデータのみになり、リポジトリのサイズが10MBほどになるじゃありませんか。
小さめのプロジェクトであれば不要でしょうが、リソースガンガン使うよ!ってゲームは転ばぬ先の杖、新スタンダードのGit LFSをぜひ活用してみてください。