首页 > 解决方案 > 如何使用浅克隆获得正确的 git rev-list 计数?

问题描述

我发现在 gradle 构建期间将 git 修订号添加到我的项目版本中是一个非常聪明的主意,例如major.minor.commit. 这是通过

git rev-list --count HEAD

现在我正在使用 gitlab ci,它只获得最新的 50 次提交:

Fetching changes with git depth set to 50...

所以我最终的版本号一直都是 50。长话短说,我如何使用浅 git 克隆获得正确的计数?

标签: gitgradlegitlab-ci

解决方案


(注意:这仅涉及计算计数,而不是这是否是一个好主意。至于这是否是一个好主意:考虑如果您拥有三个存储库副本会发生什么,一个来自某个中心点,第二个来自用户 A用户 A 添加了一个提交,第三个是用户 B 的用户 B 添加了一个提交。用户 A 的存储库中的计数是多少?用户 B 中的计数是多少?)

你没有。

Git 无法查看其他存储库的提交(嗯,除非您使用git fetch并且他们将这些提交提供给您的 Git,以便您的 Git 填充到它自己的存储库中 - 但在那时,这些不是其他存储库的提交:它们)现在是的,或者更准确地说,它们现在是共享的)。

git rev-list命令枚举 - 或使用--count,只是计数 - 在您的存储库中提交。所以你需要一个足够深的存储库来统计你关心的所有提交,也就是所有返回根目录的提交。所以不要使用浅存储库。

请注意,最初设置完整的存储库可能需要相当长的时间,但在那之后,git fetch上游只会为您提供新的提交,这通常最多需要几秒钟。


推荐阅读