如何防止Unity 3D的库通过外部版本控制继续重建?

时间:2013-09-13 03:34:28

标签: git caching unity3d

This issue is about 2 years old now (for me). Current answer is: can't be done.

我正在使用git,但我相信这并不取决于您使用的是哪一个,即使它是资产服务器。

请注意,我正在关注所有内容in the manual以及what I've found around

库重建可能需要几分钟到几小时,具体取决于Unity认为需要工作的程度。

虽然这不是一个关键问题(它不会停止工作流程)但它仍然很大。 由于这个问题我们没有完全使用git。将历史记录遗留给旧提交甚至简单changing a parallel branch can become a nightmare是不切实际的。所以我们总是避免这样做,除非它是至关重要的。

有很多东西会触发库重建,这里有几个已知的:

  • 触摸文件。这里没有脑子。你接触的越多,花的时间就越多。
  • 在Unity之外移动/重命名文件。如果它们是视频文件,则特别注意。
  • 将时间戳保留在git中是不够的。至少在the way I could do it
  • 每当我们在新机器上结账时 - 这将添加额外的库重建,因为最终必须将构建平台设置更改回Android或其他任何内容。

标题中的问题是:如何防止图书馆继续像这样继续重建?

至于一些似乎合理的预期但无效的答案......

如果我提交库,它将无法工作,因为即使只是在打开Unity之前检查旧提交并返回到同一个提交也将触发库重建。

名为“缓存服务器”的“库网络缓存”无法解决任何这些问题。它确实使它更快,有时候,特别是用于检查新机器。但它还远远不够好。它仍然可能需要几个小时。

1 个答案:

答案 0 :(得分:0)

作为滚动文件到旧版本,然后回到最新版本触发重建,我只能想象Unity正在查看文件的时间戳,至少。它可能也在查看树 - 存在哪些文件等,它可能使用内容哈希,甚至是树结构。

有趣的是 - 在Unity关闭的情况下 - 以保持时间戳的方式将整个资产树复制到第二个位置,然后签出旧提交,然后再检查当前的提交,然后将副本复制回来,再次,保持时间戳。 然后打开Unity并查看是否要重建。如果是这样,我不知道它是如何确定它需要这样做(存储文件驻留在磁盘上的位置,在块级别下来?)。

如果它有效,它将只允许你一个技巧 - 检查旧的提交,然后再检查当前的提交 - 而不会打扰事情。它不会让你只是去旧提交,但没有重建,因为旧提交将没有时间戳,即使你伪造旧文件,新/移动/删除文件,校验和等。,也可以产生重建。

另一种选择是弄清楚Unity在哪里做的事情,然后将它(或几个)包装在git repo(或几个)中。这将允许您在库重建之前,期间和之后对它们执行git status,以查看它实际上在做什么。然后,您实际上可以将时间戳技巧与记录Unity生成的资产blob的第二个repo混合,并将它们编写为一致工作,以防止Unity注意到更改。

我需要更多信息才能更进一步。我几年没用过Unity了。