【问题标题】:VSTS Git Object Count much larger than expectedVSTS Git Object Count 比预期大得多
【发布时间】:2018-05-30 18:00:09
【问题描述】:

我是 GIT 和 Visual Studio Team Services(VSTS,基于云的免费 Team Foundation Server 版本)的新手,我最近才开始将它用于我们的网站开发。

我担心创建一个版本所花费的时间,检查文件需要几分钟,我猜是因为它试图处理大量的对象?对象计数状态为 23,909?我在存储库(不包括 .git 文件夹)上完成了 TreeSize,它显示以下内容?

也试过git gc --aggressive --prune,但这并没有减少文件数。

可能存储库中存储了一个大型图像文件夹,但我很确定它们已被删除,因为它们没有显示在 git 或 VSTS 网站上?

很高兴有任何帮助!

对于那些感兴趣的人,这是我上次发布的日志。

https://codeshare.io/5w0qop

【问题讨论】:

  • 您是否将二进制文件放入您的 Git 存储库中?如果你是,那是个大问题。
  • 是的,我有什么选择?
  • 通过使用.gitignore 文件排除二进制文件。
  • 那么如何在没有二进制文件的情况下构建和发布?
  • 您将它们转换为 NuGet 包并将它们托管在 VSTS 的包管理源中。

标签: git azure-devops


【解决方案1】:

也许没有什么好害怕的,因为 git 对象用于存储文件、树和提交对象的所有历史记录。

您可以查看git sizer 以更好地查看/计数存储的对象。它还可以提示您为什么您的存储库很大(在大小或文件数量方面)。

如果您必须清理您的历史记录(但首先要真正理解它的含义!),您可以查看BFG repo cleaner,这是一个非常好的工具...

此外,我不确定您的本地对象计数是否代表存储库之一(除非您进行了全新克隆)。

您肯定有很多只是在本地创建的对象。

也试过 git gc --aggressive --prune 但这并没有减少文件数。

它不减小尺寸还有一个很好的理由。这是因为 reflog 保留了很多对象(允许修复错误的日志!)。

所以如果你真的想清除无用的对象,你需要先清理 reflog:

git reflog expire --expire=now --all 

我担心创建一个版本所花费的时间,检查文件需要几分钟,我猜是因为它试图处理大量的对象?

VSTS 每次都在新 VM 上构建,因此它应该每次都克隆整个存储库 :( 而不是仅仅获取差异。

如果您不需要整个历史记录(大多数情况下都是这种情况,除非您根据 git 历史记录计算版本),您可能应该通过将depth 设置为 1 来进行浅克隆您构建的 VSTS git 存储库设置。它将获取更少的对象。

PS:你想用 TreeSize 准确地显示什么?只是你只有 3415 个文件?

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 2011-02-24
    • 2018-08-30
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2021-03-14
    相关资源
    最近更新 更多