我正在使用CircleCI来构建一个Android私有项目。构建工作很好,但是容器上的origin/master提交历史与我在本地机器上得到的不同。
我在本地机器和容器上执行了git rev-list origin/master的不同b/w输出,并发现了相当多的差异--即容器上的回购中缺少提交。
我尝试将这个项目从Github克隆到我的本地机器上,它向我展示了相同的git提交历史(正确的提交计数),CircleCI正在做一些不同的事情吗?
发布于 2017-05-25 19:51:27
CircleCI 1.0做了一个浅浅的克隆,这导致了您所看到的。
在克隆回购之前,CircleCI会检查是否有“源缓存”可用。如果是这样的话,它将使用它重新创建.git/。然后,在CircleCI 1.0上进行浅层克隆。在CircleCI 2.0 (测试版)上,将完成一个标准克隆。然后,完成工作以获得正确的提交/标记。
如果要将CircleCI 1.0上的存储库转换为非浅存储库,请使用以下命令:
"[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow"在1.0中,源缓存保存在dependencies阶段之后,因此我建议在该阶段之后不要这样做,这样就可以有效地保持缓存。对于2.0,在运行save_cache步骤时保存它。
-Ricardo N Feliciano
开发人员布道者,CircleCI
发布于 2017-05-19 09:25:00
正如@ElpieKay在评论中提到的,这与CircleCI浅层克隆回购有关。有关完全克隆,请参阅https://github.com/prontolabs/pronto/issues/103获取circle.yml配置。例如,我做了:
checkout:
post:
- "[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow"https://stackoverflow.com/questions/44063155
复制相似问题