简介

在 Git 并不会追踪目录改变,所以在检出分支时你需要手动移除目录。 Unity 会为文件与目录生成对应的 .meta 文件。 这些钩子就是用来移除空目录的 .meta 文件来保持一致性。

使用方式

拷贝 install-hooks.shhooks 目录到 Git 仓库目录中,然后运行 install-hooks.sh

注意

  • 文件模式

hooks/post-checkouthooks/post-merge 文件并未设置为可执行文件,但在运行 install-hooks.sh 时会设置拷贝的文件的可执行权限。 这是由于 Git for Windows 默认并没有启用 core.filemode,而默认文件的权限是 644

  • 深度优先

当查找空目录时,我们需要使用深度优先搜索。然后我们需要删除每一个遇到的空目录,这样我们才可以移除嵌套在一起的空目录。

测试

你可以运行 hooks/testcase.sh 来建立测试目录。 然后运行 hooks/post-checkout.shhooks/post-merge 移除空目录。

GitHub

UnityGitHooks: Remove empty directories after git checkout for Unity

参考资料