【问题标题】:How do I make the Xcode Continuous Integration service perform shallow git clones?如何让 Xcode 持续集成服务执行浅 git 克隆?
【发布时间】:2013-11-04 19:52:01
【问题描述】:

我刚刚使用 Xcode CI (http://www.apple.com/osx/server/features/#xcode-server) 安装了新的 OS X 服务器。

我已经为我的项目成功设置了 CI,但是主 git repo 的一个子模块非常大(它包含版本控制的图像,而不是代码)。

出于性能和空间相关的原因,我希望 CI 在获取子模块时使用浅克隆而不是完整克隆。有没有办法配置 CI 来做到这一点?

或者有没有其他方法可以加快这个过程?

【问题讨论】:

    标签: xcode git osx-mavericks


    【解决方案1】:

    Shallow submodules 可以用 git,问题出在 Xcode CI。

    使用 git 存储大型二进制图像是反模式,因此它可能永远不会是最佳的行为方式。为了 Xcode 的缘故,理想情况下,您根本不会为此目的使用 git,而只是将构建过程检索单个图像的脚本写入 CI(例如,通过 rake 或 gradle 任务、wget、curl、scp 等)。如果它真的是一个图像目标,你可能有能力引用它,比如这个 jar 文件:

    https://github.com/projecthydra/hydra-jetty/blob/master/solr/lib/solr-analysis-extras-4.9.0.jar

    CI 对目标的其他可能状态的可用性或修订历史不感兴趣。它只是想满足依赖。

    如果您必须使用submodule,您可以设置自己的精简内部回购目标,名为[that_submodule]_current,它只具有您想要的单一状态。将其吹走并根据需要更换。

    请注意,Xcode 显然有一个 detached submodule head bug,因此这表明它们需要一段时间才能处理其他稍微更奇特的子模块选项,例如 --depth

    【讨论】:

    • 嗨,我们正在谈论 cocos2d 存储库。它不是二进制的,它只有几千个提交。
    • 所以它不是版本控制的图像?数千次代码提交是相当普遍的。你想要的是:git clone --depth 1 --branch master --single-branch <TARGET> 但 Xcode 因--depth 而坏了。
    • 是的,这正是我想要的。这就是我通常所做的。我的问题是“如何让 xCode 服务器做到这一点?”
    • 并且绝对清楚,因为这个问题是不久前提出的并且可能会出现混淆 - 我的项目有几个子模块。一个是艺术回购,其中包含“版本控制的图像”。另一个是 cocos2d 库,它没有。两者都是子模块,都需要很长时间才能结帐。
    • 不幸的是,Xcode 目前似乎无法通过其正常的配置通道处理--depth(或任何分离的头)。我没有解决方法。这是一个严重的限制性错误。
    猜你喜欢
    • 1970-01-01
    • 2016-05-06
    • 2017-04-25
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    相关资源
    最近更新 更多