Team Foundation Server 2015(tfs2015)在orgin/remote上运行git gc --prune = now

Jan*_*wak 5 git tfs garbage-collection tfs-2015 azure-devops

有没有办法git gc --prune=now在远程Team Foundation Server 2015(tfs2015)上运行?或者是git gc --prune=now本地运行然后在tfs2015上创建新存储库并将其推送到新远程存储库,然后删除旧存储库,并将新存储库重命名为旧名称的唯一方法.这样做时不要忘记关闭喜欢的提交.

Jak*_*icz 5

请参阅https://blogs.msdn.microsoft.com/congyiw/2015/12/14/why-does-cloning-from-vsts-return-old-unreferenced-objects/ - 这是TFS托管git的已知限制,它没有gc命令.

Microsoft提供了两种解决方法:

  • 克隆仓库,在本地清理它,从服务器上删除它,创建一个新的仓库并将清理好的仓库推送到它(你在问题中描述的内容)
  • git clone,但获得这样的本地回购:

    mkdir newRepo
    git init
    git remote add origin 
    #fetch one branch first
    git fetch origin master
    #fetch everything else
    git fetch origin
    
    Run Code Online (Sandbox Code Playgroud)

    欺骗TFS实际上只向你发送你真正需要的对象.

如果您能够承受丢失拉动请求等(例如,如果这是一个相对较新的回购),则选项1对我来说似乎更合理.

选项2感觉非常糟糕,因为repo的任何用户都必须以这种方式手动创建他们的克隆.


Jan*_*wak 2

关于在 TFS v.Next 中进行此更新的更新,并在 VSTS 中推出所有准备工作 https://blogs.msdn.microsoft.com/congyiw/2015/12/14/why-does-cloning-from-vsts-return-old- unreferenced-objects/ “更新(2017-08-09):我们向 VSTS 推出了提交可达性位图索引,并删除了下面提到的克隆作弊。克隆将不再下载无法访问的对象!我们仍然没有真正的对象级别git gc 尚未在服务器上运行,但克隆大小现在会更小。

TFS on-prem 将在 v.Next 中获得这些更改(不是在任何 TFS 2017 更新中,而是在下一个主要版本中)。正如 Brian Harry 提到的,我们应该会在几周内推出 v.Next 的候选版本。”