git - 如何使用浅克隆获得正确的 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 克隆获得正确的计数?
解决方案
(注意:这仅涉及计算计数,而不是这是否是一个好主意。至于这是否是一个好主意:考虑如果您拥有三个存储库副本会发生什么,一个来自某个中心点,第二个来自用户 A用户 A 添加了一个提交,第三个是用户 B 的用户 B 添加了一个提交。用户 A 的存储库中的计数是多少?用户 B 中的计数是多少?)
你没有。
Git 无法查看其他存储库的提交(嗯,除非您使用git fetch
并且他们将这些提交提供给您的 Git,以便您的 Git 填充到它自己的存储库中 - 但在那时,这些不是其他存储库的提交:它们)现在是你的,或者更准确地说,它们现在是共享的)。
该git rev-list
命令枚举 - 或使用--count
,只是计数 - 在您的存储库中提交。所以你需要一个足够深的存储库来统计你关心的所有提交,也就是所有返回根目录的提交。所以不要使用浅存储库。
请注意,最初设置完整的存储库可能需要相当长的时间,但在那之后,git fetch
上游只会为您提供新的提交,这通常最多需要几秒钟。
推荐阅读
- javascript - 斜体在数据表的前 2 个字上
- javascript - javascript 的 window.scrollY 在某些设备上不起作用
- java - httpclient.client.HttpResponseException:请求太多
- c# - 抽象类构造函数和派生类
- ejb - 如果单个类可以由多个线程同时执行。为什么 EJB 将容器中的无状态 bean 池化?
- php - Safari Add to Homescreen 将分号添加到 url -> 404
- django - 使用 Django ModelForm 设置具有非模型字段的字段集
- blockchain - 交易发生时如何将特定数量的代币转移给 Solidity 中的每个持有者?
- c# - 使用高分辨率计时器在 WPF 中工作时出现异常
- reactjs - Typescript 滚动窗口函数类型