大多数 CI 服务都提供浅克隆存储库的方法。例如,在 Travis 上:
git:
depth: 1
或在 AppVeyor 上:
clone_depth: 1
or
shallow_clone: true
这具有明显的速度优势,因为您不必克隆整个存储库。
浅克隆在 CI 服务上有什么缺点吗?是否存在浅克隆会使 CI 构建失败的情况?否则,为什么浅克隆不是这些 CI 服务的默认设置?
最佳答案
它通常不会发生的原因有两个。
首先,浅克隆的哈希值将不同于您在存储库中可能拥有的任何版本。因此,将无法跟踪您为任何特定结果所做的构建。
其次,如果您没有详细信息,大多数 Git 服务器都能够发送优化的“everything.pack”。否则,服务器将不得不提供一个自定义提交包,其中仅包含要发送给您的浅拷贝。因此,虽然可能有更多的数据通过线路传输,但实际上可能会导致服务器上的工作量增加。
最后,相当多的 CI 构建将执行某种标记操作并将其上传到存储库,实际上您不能标记浅克隆(见第 1 点)。
关于git - 浅克隆对 Travis 和其他 CI 服务的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278233/