克里斯托夫·伯格:Git 过滤器

克里斯托夫·伯格:Git 过滤器

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

Debian使用Git存储库来维护软件包,但大量数据导致存储问题。他们通过使用git clone --filter命令找到了解决方案,这显著减小了存储库的大小。总体磁盘消耗从近300GB减少到15GB。

🎯

关键要点

  • Debian的软件包主要在Git存储库中维护,许多存储在salsa.debian.org上。
  • Debian运行一个vcswatch服务来跟踪所有包装存储库的状态,并将其存储在PostgreSQL数据库中。
  • 过去,Git数据的存储需求导致scratch分区扩展到300GB,尝试使用浅克隆仅节省了少量空间。
  • Debian只需要从存储库中获取最少的信息,因此尝试不获取完整的存储库克隆。
  • Gábor Németh建议使用git clone --filter blob:none来解决存储问题,这一建议在bug报告中被忽视了近一年。
  • 使用blob:none过滤器后,克隆的存储库大小缩小到原始大小的1/100。
  • 进一步使用tree:0过滤器,克隆的存储库大小缩小到原始大小的1/1000。
  • 在qa.debian.org上部署新选项后,整体磁盘消耗从近300GB减少到15GB,减少了1/20。
  • 一些存储库的大小从GB级别缩小到MB级别。
➡️

继续阅读