Вы можете использовать либо git ls-tree -r -l <revision> <path>
, чтобы получить размер BLOB-объекта в данной ревизии, например,
$ git ls-tree -r -l v1.6.0 gitweb/README
100644 blob 825162a0b6dce8c354de67a30abfbad94d29fdde 16067 gitweb/README
Размер BLOB-объекта в этом примере равен '16067'.Недостатком этого решения является то, что git ls-tree
может обрабатывать только одну ревизию одновременно.
Вместо этого можно использовать git cat-file --batch-check < <list-of-objects>
, передавая ей идентификаторы BLOB-объектов.Если местоположение файла не изменилось в истории (файл не был перемещен), вы можете использовать git rev-list <starting-point> -- <path>
, чтобы получить список ревизий, затрагивающих данный путь, преобразовать их в имена больших двоичных объектов, используя <revision>:<path>
расширенный синтаксис SHA-1 (см. git-rev-parse manpage) и передайте его в git cat-file
.Пример:
$ git rev-list -5 v1.6.0 -- gitweb/README |
sed -e 's/$/:gitweb\/README/g' |
git cat-file --batch-check
825162a0b6dce8c354de67a30abfbad94d29fdde blob 16067
6908036402ffe56c8b0cdcebdfb3dfacf84fb6f1 blob 16011
356ab7b327eb0df99c0773d68375e155dbcea0be blob 14248
8f7ea367bae72ea3ce25b10b968554f9b842fffe blob 13853
8dfe335f73c223fa0da8cd21db6227283adb95ba blob 13801