哈希
- Target 的属性(例如名称、平台、产品等)
- Target 的文件
- Target 依赖的哈希值
此外,在计算
Swift 版本
Section titled “Swift 版本”我们哈希从运行命令 /usr/bin/xcrun swift --version 获取的 Swift 版本,以防止因 Swift 版本与 target 和二进制文件不匹配而导致的编译错误。
-configuration 标志背后的想法是确保调试二进制文件不用于发布构建,反之亦然。但是,我们仍然缺少一种机制来从项目中删除其他配置以防止它们被使用。
如果你在使用缓存时注意到跨环境或调用的非确定性行为,这可能与环境之间的差异或哈希逻辑中的 bug 有关。我们建议按照以下步骤来调试问题:
- 运行
tuist hash cache或tuist hash selective-testing(为二进制缓存 或选择性测试 计算哈希),复制哈希值,重命名项目目录,然后再次运行命令。哈希值应该匹配。 - 如果哈希值不匹配,可能是生成的项目依赖于环境。分别在两种情况下运行
tuist graph --format json并比较图。或者,生成项目并使用 Diffchecker 等 diff 工具比较它们的project.pbxproj文件。 - 如果哈希值相同但在不同的环境中不同(例如 CI 和本地),请确保在各处使用相同的配置和 Swift 版本。Swift 版本与 Xcode 版本绑定,因此请确认 Xcode 版本匹配。
如果哈希值仍然是非确定性的,请告诉我们,我们可以帮助调试。