我正在处理大型项目,这些项目在单独的git存储库中具有Common资产。我们如何简单地设置项目是这样的:
/
#主体团结项目
/ext/Common
#通用源统一项目(使用git子树或子模块签入)
与任何统一项目一样,Common包含Assets文件夹
/ext/Common/Assets
符号链接到/Assets/Externals/Common
我们编写了git post-checkout钩子,用于检查/Assets/Externals/
下每个包含Assets子文件夹的目录是否存在/ext/
链接。
这可以正常工作,但存在一些难题:
答:我们在团队中使用不同的Windows版本和OSX。我们需要跨平台的方式来编写结帐后脚本。因此依赖于python。
B)git pull之后,git结帐后的钩子不会触发,这是最佳选择。
C)需要在存储库中编写Git签出钩子,这是我能做到的唯一方法,就是在存储库中的某个位置推送消息并修改git config git-hook路径。
我已经考虑过用Unity AssetPostprocess :: OnPreprocessAsset替换git post-checkout挂钩。但是需要注意的是,由于项目脚本尚未编译,并且由于未形成符号链接而导致Unity中缺少脚本,因此它不会在新的结帐时触发。
您能想到哪些替代方案来解决A),B),C)问题?有更好的git hook吗?您知道如何避免在多个项目中发生混乱吗?
答案 0 :(得分:2)
我们以类似的方式使用了git子模块,但是没有使用符号链接。 git子模块已签出到<Unity project>/Assets/Common
中。没有结帐后的钩子,也没有跨平台的问题,但是我们团队中的某些成员(大多数是设计人员)在没有从命令行明确进行子模块更新的情况下无法获得最新版本的子模块。事实证明,这令他们感到沮丧,我们决定不再使用它(即使我喜欢它)。