Xcode 机器人 : git submodules not initialized

标签 xcode git git-submodules osx-server xcode-bots

我正在尝试使用 OSX 服务器设置 Xcode 机器人。 配置 git 存储库并创建机器人后,我运行集成。 它失败了,因为存储库仅被部分 checkout 。更准确地说:在配置的 6 个子模块中,只有 3 个被初始化和 check out 。

didi@mac:/Library/Server/Xcode/Data/BotRuns/Cache/c5fda8f4-4d25-4d25-c18a-eb0b16a06692/source$ git submodule status
+c6e8420aec4147641fb1ca12d9f1d31bdd804e77 libs/asi-http-request (v1.7-320-gc6e8420)
-ae64a38766b42f236bb94f0e661cddb829f9ac43 libs/kraken
-7da02b323636bbaa0bbbf5b4eb229fcc07b1e14a libs/route-me
 152f9ee5576e710705a49032253d7d5af5366f9c libs/routing (152f9ee)
 347aaf74fe0c6388785095efdbf6397851514b7f libs/rtlabel (1.0-32-g347aaf7)
-562cf6b1c879f03546f5184e012cea15c4f159db libs/skmaps

(-表示未初始化)

看bot日志,似乎只是忽略了子模块初始化部分缺失的子模块:

...
Checking connectivity... done
Submodule 'libs/asi-http-request' (https://github.com/BikeCityGuide/asi-http-request.git) registered for path 'libs/asi-http-request'
Submodule 'libs/routing' (ssh://mac_ci@rooty.bikecityguide.org/var/repos/librouting.git) registered for path 'libs/routing'
Submodule 'libs/rtlabel' (https://github.com/BikeCityGuide/RTLabel.git) registered for path 'libs/rtlabel'
Cloning into 'libs/asi-http-request'...
...

此处或其他任何地方都没有错误消息。没有提到例如日志中任意位置的“kraken”(缺失子模块的名称)。

当手动 check out (克隆、子模块初始化、子模块更新)时,所有子模块都被初始化。

.gitmodules 看起来像这样:

$ cat .gitmodules 
[submodule "libs/asi-http-request"]
    path = libs/asi-http-request
    url = https://github.com/BikeCityGuide/asi-http-request.git
[submodule "libs/rtlabel"]
    path = libs/rtlabel
    url = https://github.com/BikeCityGuide/RTLabel.git
[submodule "libs/routing"]
    path = libs/routing
    url = ../librouting.git
[submodule "libs/kraken"]
    path = libs/kraken
    url = ../kraken_ios.git
[submodule "libs/route-me"]
    path = libs/route-me
    url = ../route-me.git
[submodule "libs/skmaps"]
    path = libs/skmaps
    url = ../skmaps.git

基础仓库和通过相对URL 引用的4 个子模块仓库都需要ssh 身份验证。在 OSX 服务器中设置的用户可以访问所有这些。 机器人的日志中没有任何试图 pull 丢失的子模块的痕迹。

我可以手动修复本地存储库,但我不希望在添加新项目和新子模块时再次遇到同样的问题。

git 版本 1.8.4.2

我没有想法。

最佳答案

在 Xcode 6.1.1 和 OS X Server 4.0 上,看起来他们修复了具有分离 HEAD 问题的子模块,但仍然存在一些错误。我的一个项目有一个子模块被 Xcode Server 完全忽略,因此应用程序无法构建:

$ git submodule
 8a88bc41c9dc0f57c921d82bc4e7b93e1c4cbf7a InAppStore (heads/master)
 e4203f9f61d2546868c1274da5c7a0c56b87a737 Libraries (heads/master)  <--- IGNORED
 01902f255e6c3d90f0db41cb62dd2934098b98dd MixpanelTracker (heads/master)
 e2bee59accd817d50dff881a42c9e9afe307226f XLFacility (1.4.1-5-ge2bee59)

我的解决方法是添加一个预集成脚本触发器:

cd "$XCS_SOURCE_DIR/{YOUR_APP_REPO_NAME_WITHOUT_DOT_GIT_SUFFIX}"
git submodule update --init --recursive

虽然有关于 checkout 不干净或类似问题的非致命警告,但此时一切都在 build 中。当我将机器人的配置更改为将“清洁”设置为“始终”时,它们消失了。

关于Xcode 机器人 : git submodules not initialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21017573/

相关文章:

git - 如何查询 TFS 2013 API 以获取团队项目集合中的 git 存储库?

git - 大厅 git 资源;访问 Git 标签以在 docker-image put 上使用

git - 用 release 标记 git 子模块

git - 恢复删除的子模块

ios - XCode:无法通过 Storyboard 更改导航栏色调

ios - Swift 2 - kCFStreamErrorDomainSSL,-9813 使用 ssl

android - 如何在android .go中解析git commit id

子模块的git公共(public)子模块

ios - 应用程序安装失败 : A valid provisioning profile for this executable was not found

xcode - SwiftUI 动态修改 TextField 格式、字符串模式、掩码