我正在处理在单独的 git 存储库中具有公共(public) Assets 的大型项目。我们如何简单地设置项目是这样的:
/
# 主要unity项目
/ext/Common
# 通用源统一项目(使用 git 子树或子模块 checkin )
与任何统一项目一样,Common 包含 Assets 文件夹
/ext/Common/Assets
符号链接(symbolic link)到 /Assets/Externals/Common
我们编写了 git post-checkout Hook ,用于检查 /Assets/Externals/
链接是否存在于 /ext/
下包含 Assets 子文件夹的每个目录。
这工作还可以,但有一些难题:
A) 我们在团队中使用不同的 Windows 版本和 OSX。我们需要跨平台的方式来编写 checkout 后脚本。因此对 python 的依赖。
B) Git post-checkout hook 不会在 git pull 之后触发,这将是最佳的。
C) Git post-checkout hook 需要写在存储库中,我唯一能做到这一点的方法是推送到存储库中的某个位置并修改 git config git-hook 路径。
我考虑过用 Unity AssetPostprocess::OnPreprocessAsset 替换 git post-checkout hook。然而,需要注意的是,它不会在新 checkout 时触发,因为项目脚本尚未编译,并且由于符号链接(symbolic link)尚未形成,Unity 中缺少脚本……这不是一件好事。
你能想到什么替代方案来解决 A)、B)、C) 问题?有更好的 git hooks 吗?您知道如何避免多个项目出现这种困惑吗?
最佳答案
我们以类似的方式使用了 git 子模块,但没有使用符号链接(symbolic link)。 git 子模块已 check out 到 <Unity project>/Assets/Common
.没有 checkout 后 Hook ,也没有跨平台问题,但我们团队的一些成员(主要是设计师)在没有从命令行明确执行子模块更新的情况下无法获得最新版本的子模块。事实证明,这让他们非常沮丧,我们决定不再使用它(尽管我喜欢它)。
关于git - Unity 和 git : multiproject structure and symbolic links, 更好的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52402654/