2018年6月14日木曜日

[Unity] メタァ・・・なんで忘れてしまうん・・・

Unity で .meta ファイルが commit されてなくて困ったってのをよく見かけるので書いた。

メタファイルをコミットしてない、かつ、対象のファイルがコミットされていると commit/push 禁止するフックスクリプト。
#!/bin/sh
err=0
# untracked な .meta ファイルを列挙
for METAFILE in `git clean -n -e meta | cut -f 3 -d " " | grep -o ".*\.meta"`; do
# .meta を含んだパスが METAFILE に入る
FILE=${METAFILE%.meta}
# .meta を除いたパスが FILE に入る
# FILE が存在し、git 管理下の場合警告
if [ -f "$FILE" ]; then
if [ ! -z "`git log -1 --oneline $FILE`" ]; then
# 過去にバージョン管理されたが、現在は管理外の場合がある
if [ -z "`git clean -nd | cut -f 3 -d " " | grep -v .meta | grep -o "$FILE/\{0,1\}$"`" ]; then
echo "$FILE"
err=1
fi
fi
fi
done
if [ $err -ne 0 ]; then
echo
echo .meta ファイルが commit されてません
echo $'\e[1;31mPUSH FAILED.\e[m'
exit 1
fi
exit 0
view raw check-meta.sh hosted with ❤ by GitHub


コミットされているかどうかの判定がびみょいが、まぁ使えるはず

0 件のコメント:

コメントを投稿