我正在测量git blob大小
fileSizeThreshold=2^19
git rev-list --objects --all \
| git cat-file --batch-check='"%(objecttype)","%(objectname)",%(objectsize),%(objectsize:disk),"%(rest)"' \
| sed -n 's/^"blob",//p' \
| awk -F',' '$2'">= ${fileSizeThreshold}" \
| sort -t "," --numeric-sort --key=2 > ${outDir}/largeBlobs
这给了我所有大于512kb的斑点。 我想知道在考虑将此文件(其路径模式...)放入Git大文件存储(LFS)中时应该考虑的大小正确。
是%(objectsize)
还是%(objectsize:disk)
?
因为%(objectsize:disk)
报告了一些奇怪的尺寸(粗体):
在git cat-file的警告部分中,有一些关于此的注释,我不理解。
考虑到LFS,应该应该看看objectsize:disk
,因为那是用于该Blob的空间...?
答案 0 :(得分:3)
您应该查看%(objectsize)
。
当git存储blob时,它可能将它们存储为平面对象或打包对象。
在存储平面对象时,git仍会压缩内容,因此%(objectsize:disk)
将反映blob的压缩大小;
当将Blob打包在一起时,git可能会选择仅使用其diff来将blob2
存储在blob1
旁边;
在这种情况下:disksize
的{{1}}将是Blob的压缩大小,而blob1
的{{1}}将是其diff与disksize
CAVEAT部分提到,某些斑点可能报告的blob2
很少,因为只报告了它们的差异。