我的Xcode Bot正在使用我的repo子模块的过时版本。
尽管子模块在父应用程序的提交历史记录中更新为新版本,但它仍构建旧的子模块代码。
我认为当我的错误在TestFlight版本中可以重现时,我会发疯,尽管已经修复了#34;在子模块和本地构建中。
事实证明,Xcode Bots没有正确地提取指定的子模块提交。
答案 0 :(得分:2)
这个问题的一个更简单的解决方案,不需要服务器具有git遥控器的凭证 - 将其添加为机器人的预集成脚本:
#!/bin/sh
# Enumerates each submodule to check out the desired commit.
# Needed because Xcode bots for some reason prefers to check out
# the branch head, which may result in the wrong commit.
cd "$XCS_PRIMARY_REPO_DIR"
git submodule foreach --recursive 'git checkout $sha1'
它以递归方式枚举您的子模块,并检查父级仓库所期望的提交。
答案 1 :(得分:1)
从Xcode 6开始,Xcode Bots不保证将repo的子模块更新为指定的提交。
您需要在Xcode Bot的构建之前手动更新子模块:
git submodule update --init --recursive
为了简化这一点,我已将updateGitSubmodules
添加到cavejohnson
Xcode Bot脚本工具中。将以下内容添加到Before Integration Run Script阶段以自动更新子模块:
整合之前>运行脚本:
#!/bin/bash
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:$PATH
cavejohnson updateGitSubmodules
最后,我们opened an ticket探讨了如何在上游修复此行为。