测量 git blob 对象大小的正确方法是什么
Whats the correct way to measure a git blob object size
我正在用
测量git斑点大小
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',' ''">= ${fileSizeThreshold}" \
| sort -t "," --numeric-sort --key=2 > ${outDir}/largeBlobs
这给了我所有大于 512kb 的 blob。
我想知道在考虑将此文件(其路径模式...)放入 Git 大文件存储 (LFS) 时要考虑的正确大小。
是%(objectsize)
还是%(objectsize:disk)
?
因为 %(objectsize:disk)
报告了一些奇怪的尺寸(粗体):
- "0901797d58f6916cad4ef4fd581d8254596bdd19", 722013b, 105b
在 git cat-file 的警告部分,有一些注释,我不明白。
考虑到 LFS,应该看看 objectsize:disk
据说是因为这是用于此 blob 的 space...?
你应该看看 %(objectsize)
。
当 git 存储 blob 时,它可以将它们存储为平面对象或压缩对象。
存储平面对象时,git仍然压缩内容,所以%(objectsize:disk)
将反映压缩后的blob大小;
将 blob 打包在一起时,git 可能会选择仅使用其差异将 blob2
存储在 blob1
旁边;
在那种情况下:blob1
的 disksize
将是 blob 的压缩大小,而 blob2
的 disksize
将是 its 的压缩大小与 blob1
的区别
CAVEAT 部分提到某些 blob 的报告 disksize
可能非常低,因为 仅报告了它们的差异 。
我正在用
测量git斑点大小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',' ''">= ${fileSizeThreshold}" \
| sort -t "," --numeric-sort --key=2 > ${outDir}/largeBlobs
这给了我所有大于 512kb 的 blob。 我想知道在考虑将此文件(其路径模式...)放入 Git 大文件存储 (LFS) 时要考虑的正确大小。
是%(objectsize)
还是%(objectsize:disk)
?
因为 %(objectsize:disk)
报告了一些奇怪的尺寸(粗体):
- "0901797d58f6916cad4ef4fd581d8254596bdd19", 722013b, 105b
在 git cat-file 的警告部分,有一些注释,我不明白。
考虑到 LFS,应该看看 objectsize:disk
据说是因为这是用于此 blob 的 space...?
你应该看看 %(objectsize)
。
当 git 存储 blob 时,它可以将它们存储为平面对象或压缩对象。
存储平面对象时,git仍然压缩内容,所以
%(objectsize:disk)
将反映压缩后的blob大小;将 blob 打包在一起时,git 可能会选择仅使用其差异将
blob2
存储在blob1
旁边;
在那种情况下:blob1
的disksize
将是 blob 的压缩大小,而blob2
的disksize
将是 its 的压缩大小与blob1
的区别
CAVEAT 部分提到某些 blob 的报告 disksize
可能非常低,因为 仅报告了它们的差异 。