Unity 创建和删除元文件folders在资源文件夹内。
在使用版本控制时,这可能会产生令人烦恼的情况(您可以跳过并转到问题):有人创建了一个将被忽略的文件文件夹,但忘记忽略该文件夹的元文件。 Unity 创建元文件,此人将元添加到版本控制中。另一个人获取变更集,并且由于他们没有该文件夹,theirUnity 删除元文件,并将元文件从版本控制中删除。并不是团队中的每个人都明白这一点,因此这个过程一直在地狱般的循环中持续下去。
令人惊讶的是这种情况经常发生。那么,两个问题:
- 版本文件夹元文件重要吗?
- 有没有办法自动忽略文件夹元文件 - 特别是在 git 或 Mercurial 上?
The Unity文档 http://docs.unity3d.com/Documentation/Manual/ExternalVersionControlSystemSupport.html say:
创建新资产时,请确保将资产本身和关联的 .meta 文件添加到版本控制中。
对我来说,这足以将它们置于版本控制之下。我看到两种解决问题的方法:
- 组织:为本地文件夹设置命名约定,例如以“_”开头。但我们都知道这是行不通的;-)
- 安装客户端预提交钩子 http://git-scm.com/book/en/Customizing-Git-Git-Hooks在所有机器上。我还没有这样做,但看起来很有希望。
我刚刚尝试了不同的 git 命令,以下命令可能有用:
git hook 脚本应首先检查 .gitignore 是否已更改:
git diff-index --cached --name-only HEAD | grep ".gitignore"
如果 .gitignore 中所有新添加的行位于 Assets 文件夹下,则打印出它们的目录名称:
git diff --cached --word-diff=plain .gitignore | grep -o -e "{+\/.*\/Assets\/.*+}" | cut -d + -f 2
Update
我刚刚写了这样一个预提交钩子:-) 请参阅 GitHub 存储库git-pre-commit-hook-unity-assets https://github.com/kayy/git-pre-commit-hook-unity-assets/tree/master对于代码和我的博客发布 http://www.scio.de/en/blog-a-news/scio-development-blog-en/entry/git-pre-commit-hook-for-ignored-unity-asset-folders有关它的更多详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)