我想检查远程存储库的大小,而不将其下载到本地磁盘。 GitLab 自动显示存储库的大小,包括 Git 文件和 Git LFS 文件的细分。这在 Azure DevOps 上也可行吗?
我在网上搜索了解决方案,找到的唯一解决方案是将存储库下载到本地磁盘并运行“git count-objects -vH”命令。
此外,您可以尝试其余API:https://learn.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-7.1&tabs= HTTP
size - 整数 - 存储库的压缩大小(字节)。
举个例子:
要通过 git clone 以编程方式获取未压缩文件的大小,我们可以使用以下方法 -
下面的 azure DevOps Rest api 仅向我们提供压缩后的大小,而不是存储库的完整扩展大小。 https://learn.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-7.1&tabs=HTTP
要计算在 git lfs 中跟踪的文件的大小以及在 git lfs 上未跟踪的文件的大小,我们可以使用以下方法。 我们可以使用完全递归和元数据内容来运行项目列表 api。
GET https://dev.azure.com/ {组织}/{项目}/_apis/git/repositories/ {repositoryId}/items?recursionLevel=Full&includeContentMetadata=true&api-version=7.2-preview.1
这将为我们提供所有 blob 对象 ID 和树对象 ID 的完整列表。
为了获取 LFS 文件的完整解压缩大小,我们可以使用以下 API 调用 –
获取https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/blobs/ {sha1}?$format=octetstream&api-version=7.0
在 SHA 中,我们将放置从项目列表 REST API 获取的 LFS 文件的对象 ID。
对于 LFS 中未跟踪的文件。我们可以使用相同的 API 将 json 格式代替八位字节。
GEThttps://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/blobs/{sha1}?$format=json&api-version=7.0
没有可以触发的单个 API 的现成解决方案可以为您提供 git 存储库中所有文件(包括 LFS 文件)的未压缩文件大小。考虑到我们不想通过克隆来获取相同的信息,您必须利用上述其余 API 创建一个客户脚本,该脚本会迭代对象以获取文件到文件的大小。
az CLI工具的azure-devops扩展包括一个方便的函数,用于调用Shamrai Aleksander的答案中提到的API,处理诸如获取身份验证令牌之类的事情:
$ az repos show --org https://dev.azure.com/YOUR-ORG --project YOUR-PROJECT --repository YOUR-REPO
{
"name": "YOUR-REPO",
"size": 123456,
// ...
}
如果您尚未安装扩展程序,则在您第一次尝试运行上述命令时,系统应该会提示您安装它。