find .git -name pack-*.idx -exec git verify-pack -v {} +
перечислит содержимое всех пакетов и даст фактический размер, который каждая часть занимает в файлах пакетов. Чтобы связать их с именами, наиболее эффективным в целом, вероятно, является объединение,
join <(find .git -name pack-*.idx -exec git verify-pack -v {} + | sort) \
<(git rev-list --all --objects | sort) \
| sort -nk4,4
поле после типа объекта (tree
, blob
, commit
, вы после BLOB-объектов)полный размер результата в вашем рабочем дереве, четвертое поле - это размер, который его дельта принимает в пакете. Измените порядок, и вам будет легко сортировать по файлам, вот один, чтобы показать только файлы и соответствующие биты данных по файлам:
join <(git rev-list --all --objects | sort ) \
<( find .git -name pack-*.idx -exec git verify-pack -v {} + \
| awk '$2=="blob" { print $1,$3,$4 } ' \
| sort) \
| sort -k2 -nk4