Unity開発向けGit LFS 追跡対象リスト
この記事はさいたまげーむす Advent Calendar 2016 10日目の記事です。
開発に必須のGit。ゲーム開発ではリソースが大きいことからリポジトリのサイズが肥大化しがちです。リポジトリのサイズに制限をかけているサービスも多く、例えばBitBucketでは2Gを超えると問答無用でプッシュを受け付けなくなってしまいます。これを解決するのは結構しんどいです(体験談)
このような問題への解決策として注目を集めてきているGit LFS(Large File Storage)をご存知でしょうか。これは、ユーザー側で指定した拡張子を持つファイルを別サーバーに置いて、本線のリポジトリにはそのリソースへのポインタだけを持つことでリポジトリ本体のサイズを抑えるもので、無料で使えます(偉大な開発チーム様に感謝)。
LFSを使うための準備としては、↓からGit LFSのクライアントをインストールするだけで完了します。
サイトに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をぜひ活用してみてください。