git - 如何使用浅表克隆获取正确的git rev-list计数?

标签 git gradle gitlab-ci

我发现在gradle构建期间将git版本号添加到我的项目版本中是一个 super 聪明的主意,例如major.minor.commit。这是通过以下方式实现的

git rev-list --count HEAD

现在我正在使用gitlab ci,它仅获得最新的50次提交:
Fetching changes with git depth set to 50...

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

最佳答案

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

你不知道

Git无法查看其他存储库的提交(好,除非您使用git fetch,并且它们将Git的这些提交交给您的Git,以便您的Git可以填充到自己的存储库中-但是在那时,这些不是其他存储库的提交:它们现在是您的,或者更准确地说,现在就共享了)。
git rev-list命令枚举(或使用--count进行计数)在存储库中提交。因此,您需要一个足够深的存储库来计算您关心的所有提交,即所有提交回到根目录的提交。因此,请勿使用浅层存储库。

请注意,完整的存储库最初可能需要花费一些时间来设置,但是在那之后,上游的git fetch仅会为您带来新的提交,这通常最多需要几秒钟。

关于git - 如何使用浅表克隆获取正确的git rev-list计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329277/

相关文章:

git - vscode 中 ohmyz 的奇怪字符

node.js - 如何使用nodegit从分支中 pull ?

git - 根目录中的新 git 存储库以包含子目录中的现有存储库

java - gradle,如何在 flavor 构建 apk 中排除特定类

node.js - 通过 UI 设置 Gitlab CI/CD 环境变量

docker - Gitlab CI中的Docker执行程序被错误的URL传递给Git存储库

git - 如何让 git 忽略一个文件(通配 rune 件)

android - 无法解析 : com. github.worker8 :RadioGroupPlus:v1. 0.1

gradle - 我有多个具有运行时参数的任务时,gradle构建失败

docker - Gitlab CI with docker+machine - 使用多个容器来测试应用程序