Git LFS处理小文件的效果如何?

Jam*_*hon 26 git version-control performance git-lfs

存储在Git LFS中的类型文件是否有最佳实践?特别是最小尺寸?

例如,一个10mb的音乐文件显然是合适的,但是一个25kb的png呢?是否值得投入LFS或者让Git处理它更好?

在将太多小文件检入LFS仓库时,我担心的是性能下降.有没有关于LFS扩展如何代表一堆较小的二进制文件的数据?是否只建议存储超过特定大小阈值的文件?

rpy*_*rpy 14

我不希望给出确切的阈值.

LFS节省了与远程存储库同步需要交换的数据量.但是,只有大文件本身不更改时才会保存.实际上,对于更改的文件,您需要第二个rountrip来处理LFS对象上的更改.

因此,如果在您的用例中,您可以包含较小的LFS文件(经常).特定的中断取决于服务器的I/O速度,主要取决于存储库和客户端之间的延迟和吞吐量.

在你的例子中,我仍然希望在pngs接近永不改变的情况下进行改进.一旦他们要在每次提交时(几乎)改变,甚至更大的文件可能不会从放入LFS中受益.

此外,典型文件越大,第二次往返的额外成本将变得越来越不重要.特别是当文件类(后缀)的大小在很大范围内变化和/或文件类中的更改频率覆盖范围很广时,您的问题可能没有明确的答案.

  • 我给人的印象是LFS的好处是经常更改二进制文件不会增加repo的大小。但这听起来像是您在说,当文件经常更改时,它实际上无济于事。那为什么要使用它呢? (2认同)
  • 只要仅涉及索引/元数据,您就不应该体验到差异。使用 LFS,保存信息的所有文件(完整存储库)的总体大小不会变小(甚至更大,老实说,仍然需要存储所有版本),但保存索引/元数据将加快对更改的对象的所有确定(本地或本地与远程实例之间)。这样后面的操作就加快了。这对于 LFS 存储的对象没有发生变化的情况来说是有利的。 (2认同)
  • LFS推/拉速度的另一个因素。从LFS进行下载似乎是同步的(至少在Gitlab上是这样),因此接连下载一个小文件可能很繁琐。如果并行下载小文件,则下载速度会大大提高。 (2认同)