Unity 提交时检查 meta 文件
文章目录
问题
Unity 官方 meta 文件介绍
Unity 会将 Assets
目录下的所有文件创建文件名 + .meta
的文件,存储文件相关的配置。
在项目中经常会出现只提交了资源文件或 .meta
文件、漏了另一个文件的情况,这会导致其他人更新仓库并打开 Unity 后,本地出现 Unity 自动生成的 .meta
文件或提示缺失资源文件的报错。
这种问题必须在源头进行处理,即提交时进行检查。
需求
- 提交时同时检查缺失的
.meta
文件与资源文件。 - 提示信息友好,支持定制输出信息的格式。
- 尽可能少的依赖,这可以大大减少部署时的麻烦,特别是在客户端。
- 易于集成到现有流程中。
SVN
SVN 是集中式版本控制软件,因此提交检查需要在服务器上执行。
环境
- CentOS 6.8
- Python 2.6
候选
C# 编写的可执行程序,使用的是硬编码的 Windows SVN 路径,无法在 Linux 上面使用。
使用 shell 的 diff grep sort 等命令组合进行检查,但是输出结果无法定制,只能使用 diff 的格式。
Python 编写的检查代码,有合理的脚本划分,可以自定义格式输出。可以运行在 Linux 上,服务器环境可以自定义,使用 Python 较为简单。
- unity_svn_checker - svn server-side hooks to help with Unity3D version control - Unity Forum
- GitHub - kalimaul/unity_svn_checker: Server-side svn hooks to help version control with Unity3D.
使用
正常代码在 Python 2.7 及以上可以直接使用,但是在 Python 2.6 版本下需要额外修复一下,把 subprocess.check_output
改为 proc.communicate
:
|
|
另外有运行时警告,也可以一起去除:
|
|
可以在服务器的钩子文件 pre-commit
中增加对此脚本的调用:
|
|
Git
Git 是分布式版本控制软件,提交都是在本地提交,然后推送到服务器上。
如果想要提高效率,那么需要在本地提交时进行检查;另外为了保险起见,也需要在服务器的推送钩子中进行二次检查。
环境
- Windows 10
- Git 2.29.2
候选
使用 Bash 脚本编写,在 Windows 平台上只依赖于 Git for Windows。
使用
只需要将钩子脚本拷贝到 .git/hooks/
目录下就可以执行检测,具体参考文档内容。
在项目中使用时可能要配置初始化脚本将钩子脚本符号链接到仓库内的脚本,便于后续更新脚本内容。
文章作者 狂飙
初次发布 2021-05-23 22:58:29 +0800
永久链接 https://networm.me/2021/05/23/unity-meta-check-on-commit/