如何使Xcode持续集成服务执行浅git克隆?

时间:2013-10-25 15:43:09

标签: xcode git osx-mavericks

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

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

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

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

1 个答案:

答案 0 :(得分:0)

使用git可以

Shallow submodules,问题在于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