struct ref_stats *refs = &stats->refs;
size_t inflated_object_total;
size_t object_count_total;
+ size_t disk_object_total;
size_t ref_total;
ref_total = get_total_reference_count(refs);
" * %s", _("Blobs"));
stats_table_size_addf(table, objects->inflated_sizes.tags,
" * %s", _("Tags"));
+
+ disk_object_total = get_total_object_values(&objects->disk_sizes);
+ stats_table_size_addf(table, disk_object_total,
+ " * %s", _("Disk size"));
+ stats_table_size_addf(table, objects->disk_sizes.commits,
+ " * %s", _("Commits"));
+ stats_table_size_addf(table, objects->disk_sizes.trees,
+ " * %s", _("Trees"));
+ stats_table_size_addf(table, objects->disk_sizes.blobs,
+ " * %s", _("Blobs"));
+ stats_table_size_addf(table, objects->disk_sizes.tags,
+ " * %s", _("Tags"));
}
static void stats_table_print_structure(const struct stats_table *table)
. ./test-lib.sh
object_type_disk_usage() {
- git rev-list --all --objects --disk-usage --filter=object:type=$1 \
- --filter-provided-objects
+ disk_usage_opt="--disk-usage"
+
+ if test "$2" = "true"
+ then
+ disk_usage_opt="--disk-usage=human"
+ fi
+
+ if test "$1" = "all"
+ then
+ git rev-list --all --objects $disk_usage_opt
+ else
+ git rev-list --all --objects $disk_usage_opt \
+ --filter=object:type=$1 --filter-provided-objects
+ fi
}
test_expect_success 'empty repository' '
| * Trees | 0 B |
| * Blobs | 0 B |
| * Tags | 0 B |
+ | * Disk size | 0 B |
+ | * Commits | 0 B |
+ | * Trees | 0 B |
+ | * Blobs | 0 B |
+ | * Tags | 0 B |
EOF
git repo structure >out 2>err &&
# Also creates a commit, tree, and blob.
git notes add -m foo &&
- cat >expect <<-\EOF &&
+ # The tags disk size is handled specially due to the
+ # git-rev-list(1) --disk-usage=human option printing the full
+ # "byte/bytes" unit string instead of just "B".
+ cat >expect <<-EOF &&
| Repository structure | Value |
| -------------------- | ---------- |
| * References | |
| * Trees | 15.81 MiB |
| * Blobs | 11.68 KiB |
| * Tags | 132 B |
+ | * Disk size | $(object_type_disk_usage all true) |
+ | * Commits | $(object_type_disk_usage commit true) |
+ | * Trees | $(object_type_disk_usage tree true) |
+ | * Blobs | $(object_type_disk_usage blob true) |
+ | * Tags | $(object_type_disk_usage tag) B |
EOF
git repo structure >out 2>err &&