Xcode 机器人不会将 git 子模块更新为指定的提交
Xcode Bots do not update git submodules to specified commit
我的 Xcode 机器人正在使用我的存储库子模块的过时版本。
尽管子模块在父应用程序的提交历史记录中更新为新版本,它仍构建旧的子模块代码。
- 父仓库使用子模块 v1.0。
- 父仓库将子模块更新到 v2.0 并将子项目提交到 github。
- "on commit" Xcode 机器人 运行 自动进行新提交。
- 父应用已上传到 TestFlight。
- TestFlight 构建包含正确的 v2.0 子模块提交(最后一次提交到父存储库)。
- 但是 TestFlight 构建包含过时的子模块 v1.0 代码。
尽管在子模块和本地构建中存在 "fixed",但当我的错误在 TestFlight 构建中重现时,我以为我要疯了。
事实证明Xcode机器人没有正确地拉取指定的子模块提交。
从 Xcode 6 开始,Xcode 不保证机器人将 repo 的子模块更新到指定的提交。
您需要在 Xcode 机器人构建之前手动更新子模块:
git submodule update --init --recursive
为了使这更容易,我已将 updateGitSubmodules
添加到 cavejohnson
Xcode 机器人脚本工具。将以下内容添加到您的 Before Integration 运行 脚本阶段以自动更新子模块:
集成前 > 运行 脚本:
#!/bin/bash
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:$PATH
cavejohnson updateGitSubmodules
最后,我们 opened an ticket 探索如何在上游修复此行为。
这个问题的更简单的解决方案不需要服务器为您的 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'
它递归地枚举你的子模块并检查父仓库期望的提交。
我的 Xcode 机器人正在使用我的存储库子模块的过时版本。
尽管子模块在父应用程序的提交历史记录中更新为新版本,它仍构建旧的子模块代码。
- 父仓库使用子模块 v1.0。
- 父仓库将子模块更新到 v2.0 并将子项目提交到 github。
- "on commit" Xcode 机器人 运行 自动进行新提交。
- 父应用已上传到 TestFlight。
- TestFlight 构建包含正确的 v2.0 子模块提交(最后一次提交到父存储库)。
- 但是 TestFlight 构建包含过时的子模块 v1.0 代码。
尽管在子模块和本地构建中存在 "fixed",但当我的错误在 TestFlight 构建中重现时,我以为我要疯了。
事实证明Xcode机器人没有正确地拉取指定的子模块提交。
从 Xcode 6 开始,Xcode 不保证机器人将 repo 的子模块更新到指定的提交。
您需要在 Xcode 机器人构建之前手动更新子模块:
git submodule update --init --recursive
为了使这更容易,我已将 updateGitSubmodules
添加到 cavejohnson
Xcode 机器人脚本工具。将以下内容添加到您的 Before Integration 运行 脚本阶段以自动更新子模块:
集成前 > 运行 脚本:
#!/bin/bash
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:$PATH
cavejohnson updateGitSubmodules
最后,我们 opened an ticket 探索如何在上游修复此行为。
这个问题的更简单的解决方案不需要服务器为您的 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'
它递归地枚举你的子模块并检查父仓库期望的提交。