我使用CircleCI构建Android Github私有项目。构建工作正常,但容器上origin/master
的提交历史记录与我在本地计算机上的提交历史记录不同。
我在我的本地机器和容器上做了git rev-list origin/master
的差异输出,发现了很多不同之处 - 即容器上的回购中缺少提交。
我尝试将项目从Github克隆到我的本地机器,它向我展示了相同的git提交历史记录(正确的提交计数),CircleCI做了哪些不同的事情?
答案 0 :(得分:5)
CircleCI 1.0执行浅层克隆,这会导致您看到的内容。
在克隆回购之前,CircleCI会检查“源缓存”是否可用。如果是,则使用它来重新创建.git/
。然后,在CircleCI 1.0上,完成浅层克隆。在CircleCI 2.0(测试版)中,完成了标准克隆。然后,完成工作以获得正确的提交/标记。
如果要将CircleCI 1.0上的存储库转换为unshallow存储库,则以下命令可以解决这个问题:
"[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow"
在1.0上,源缓存在dependencies
阶段之后保存,因此我建议不要在该阶段之后执行此操作,以便可以有效地保留缓存。对于2.0,它在save_cache
步骤运行时保存。
-Ricardo N Feliciano
开发者传播者,CircleCI
答案 1 :(得分:1)
正如@ElpieKay在评论中提到的,这与CircleCI浅层克隆回购有关。有关完整克隆,请参阅https://github.com/prontolabs/pronto/issues/103 for circle.yml config。例如,我做了:
checkout:
post:
- "[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow"