Android CircleCI容器上的repo中缺少提交

Android CircleCI容器上的repo中缺少提交,android,git,github,continuous-integration,circleci,Android,Git,Github,Continuous Integration,Circleci,我正在使用CircleCI构建一个Android Github私有项目。构建工作正常,但容器上的origin/master提交历史与我在本地计算机上获得的不同 我在本地机器和容器上执行了git rev list origin/master的diff b/w输出,发现了很多差异,即容器上的repo中缺少提交 我尝试将项目从Github克隆到我的本地机器,它显示了相同的git提交历史(正确的提交计数),CircleCI是否做了一些不同的事情?正如@ElpieKay在评论中提到的,这与CircleCI

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

我在本地机器和容器上执行了
git rev list origin/master
的diff b/w输出,发现了很多差异,即容器上的repo中缺少提交


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

正如@ElpieKay在评论中提到的,这与CircleCI浅层克隆repo有关。有关完整克隆,请参阅circle.yml配置。例如,我做到了:

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

CircleCI 1.0做了一个浅层克隆,这导致了你所看到的

在克隆回购之前,CircleCI会检查“源缓存”是否可用。如果是这样,它将使用它重新创建
.git/
。然后,在CircleCI 1.0上进行浅层克隆。在CircleCI 2.0(beta版)上,完成了标准克隆。然后,完成工作以获得正确的提交/标记

如果要将CircleCI 1.0上的存储库转换为不允许的存储库,请使用以下命令:

"[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow"
在1.0中,源缓存保存在
依赖项
阶段之后,因此我建议不要在该阶段之后执行此操作,以便高效地保留缓存。对于2.0,它在运行步骤时保存

-里卡多·费利西亚诺

开发者福音传道者,CircleCI

git rev list origin/master的输出不重要。如果CircleCI所做的修订是正确的,那也没关系。CircleCI可能有一个浅层克隆或一个特定于分支的获取,它不会触及它的
源代码/master
。这对我很重要,因为我使用的是
git rev list的输出——第一个父级——将源代码/master
计算为我的应用程序的版本代码!另外,我确信CircleCI是在主分支上构建的。更多信息:我在容器上尝试了
git log--reverse
,这不是初始提交。然后就可以了
origin/master
记录上次同步期间远程存储库中
master
的状态。它并不总是远程存储库中的
master
的当前负责人。本地maschine中的
origin/master
与容器中的不同是很正常的,因为它们可以在不同的时刻与远程存储库同步。1。您的本地计算机正在同步。远程存储库已由某人更新。容器同步。这导致本地计算机的提交数少于容器。2.本地计算机生成完整克隆,但容器生成浅克隆,例如
--depth=1
。那么本地机器的提交比容器的提交多得多。这些都是我脑海中可能出现的情况。谢谢你的确认和额外的信息!