Unityでmetaファイルが原因となって起こる問題を防ぐためのOSS『Unity Git Hooks』の使い方についてまとめました。
Unity 2020.3.23f1
はじめに
Unityを使って複数人で開発を行う際には、meta ファイルに関する問題が起こりがちです。
例えば作成したアセットの meta ファイルをバージョン管理ツールに反映し忘れた結果、他者が代わりに反映した meta ファイルと競合するといった事象が発生します。
Unity Git Hooks は、バージョン管理ツールとして git を使う場合に、このような meta ファイルの反映漏れなどを防ぐためのツールです。
MITライセンスのOSSとして公開されています。
Unity Git Hooksの機能
Unity Git Hooksを導入すると以下の機能を使うことができます。
- コミット時に、アセットが追加されたにもかかわらず meta ファイルが追加されていなかったらエラーにする
- コミット時に、meta ファイルが追加されたにもかかわらずアセットが追加されていなかったらエラーにする
- コミット時に、アセットが削除されたにもかかわらず meta ファイルが削除されていなかったらエラーにする
- コミット時に、meta ファイルが削除されたにもかかわらずアセットが削除されていなかったらエラーにする
- チェックアウトやマージの際に、空フォルダが存在していたらそれを削除する
エラーメッセージはこんな感じで出ます(GitクライアントForkを使っている場合の例)。
導入方法
導入方法は、Unity Git Hooks のリポジトリの scripts フォルダにある以下の3ファイルを取得して自身の .git/hooks 以下に加えるだけです。
- post-checkout
- post-merge
- pre-commit
既に Git Hooks を設定済みのプロジェクトの場合は、既存の各ファイルに追記する必要があります。
また、Assets フォルダがリポジトリのルートに配置されていることを前提としているため、より深い階層に Assets フォルダを置いているプロジェクトに導入するばああいには git config で Assets フォルダのパスを指定する必要があります。
この方法について詳しくは Unity Git Hooks の REAMDE を参照してください。