git - 浅克隆对 Travis 和其他 CI 服务的缺点?

标签 git continuous-integration travis-ci shallow-clone appveyor

大多数 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/

相关文章:

git - 如何解决gitlab中的Access denied?

ruby-on-rails - 根据应用程序的启动方式设置数据库

webpack - 部署 SPA 时如何确保前端的无缝可用性?

node.js - Travis CI 没有使用正确的 node.js 版本

Git:将提交的一部分应用到另一个分支

git reflog expire 和 git fsck --unreachable

r - 如何为非包代码设置 Travis?

travis-ci - 无法从 Travis 构建上传工件

windows - PowerShell-git checkout -B没有重置或替代方法?

java - 在 Jenkins CI 中测试期间在 tomcat 中运行 Web 应用程序