Я измеряю размеры git blobs с помощью
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
Что дает мне все большие двоичные объекты размером более 512 КБ. Мне интересно, какой размер является правильным, чтобы рассмотреть вопрос о размещении этого файла (его шаблон пути...) в хранилище больших файлов Git (LFS).
Это %(objectsize)
или %(objectsize:disk)
?
Потому что %(objectsize:disk)
сообщает о странных размерах (выделено жирным шрифтом):
В разделе предостережения git cat-файл есть примечание по этому поводу, которого я не понимаю.
Учитывая LFS, следует смотреть на objectsize:disk
предположительно потому, что это пространство, используемое для этого блоба...?
Вы должны посмотреть на %(objectsize)
.
Когда git хранит большие двоичные объекты, он может хранить их либо как плоские объекты, либо как упакованные объекты.
при хранении плоских объектов git по-прежнему сжимает содержимое, поэтому %(objectsize:disk)
будет отражать сжатый размер большого двоичного объекта;
при упаковке больших двоичных объектов вместе git может хранить blob2
рядом с blob1
, используя только его diff;
в этом случае: disksize
для blob1
будет сжатым размером BLOB-объекта, а disksize
для blob2
будет сжатым размером это отличается от blob1
В разделе ПРЕДОСТЕРЕЖЕНИЕ упоминается, что некоторые большие двоичные объекты могут иметь очень низкий уровень disksize
, поскольку сообщается только их дифф.
Идеальный ответ!