CircleCI 容器上的 repo 中缺少提交

Missing commits in repo on CircleCI container

我正在使用 CircleCI 构建一个 Android Github 私人项目。构建工作正常,但容器上 origin/master 的提交历史与我在本地计算机上获得的不同。

我在我的本地机器和容器上对 git rev-list origin/master 的 b/w 输出进行了差异化 b/w 输出,发现了很多差异 - 即容器上的回购中缺少提交。

我尝试将项目从 Github 克隆到我的本地计算机,它向我显示了相同的 git 提交历史记录(正确的提交计数),CircleCI 是否做了一些不同的事情?

正如@ElpieKay 在评论中提到的,这与 CircleCI 浅克隆 repo 有关。完整克隆的 circle.yml 配置参考 https://github.com/prontolabs/pronto/issues/103。例如,我做了:

checkout:
    post:
        - "[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow"

CircleCI 1.0 做了一个浅层克隆,这就是你所看到的。

在克隆 repo 之前,CircleCI 检查是否有 "source cache" 可用。如果是这样,它将使用它来重新创建 .git/。然后,在 CircleCI 1.0 上,一个浅克隆就完成了。在 CircleCI 2.0(测试版)上,完成了标准克隆。然后,完成工作以获得正确的 commit/tag.

如果您想将 CircleCI 1.0 上的存储库转换为非浅存储库,可以使用以下命令:

"[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow"

在 1.0 上,源缓存在 dependencies 阶段之后保存,所以我建议在该阶段之后不要这样做,以便可以有效地保留缓存。对于 2.0,当 save_cache 步骤为 运行.

时保存

-里卡多·N·费里西亚诺
开发布道者,CircleCI