Re: [PATCH v2] rev-list --disk-usage
From: Taylor Blau <hidden>
Date: 2021-02-10 01:52:32
On Tue, Feb 09, 2021 at 04:44:27PM -0800, Junio C Hamano wrote:
Jeff King [off-list ref] writes:quoted
Here's a re-roll of my series to add "rev-list --disk-usage", for counting up object storage used for various slices of history. ... t/t6114-rev-list-du.sh | 51 +++++++++++++++++++ t/test-lib-functions.sh | 9 +++- 7 files changed, 199 insertions(+), 8 deletions(-) create mode 100755 t/t6114-rev-list-du.shI relocated 6114 to 6115 to avoid tests sharing the same number.
Thanks.
I am getting these numbers from random ranges I am interested in, but do they say what I think they mean? Was the development effort went into the v2.28 release almost half the size of v2.29, and have we already done about the same amont of work for this cycle? : gitster git.git/seen; rungit seen rev-list --disk-usage master..next 83105 : gitster git.git/seen; rungit seen rev-list --disk-usage v2.30.0..master 183463 : gitster git.git/seen; rungit seen rev-list --disk-usage v2.29.0..v2.30.0 231640 : gitster git.git/seen; rungit seen rev-list --disk-usage v2.28.0..v2.29.0 334355 : gitster git.git/seen; rungit seen rev-list --disk-usage v2.27.0..v2.28.0 182298
I think you are surprised by these numbers because you're only counting
disk usage of commit objects in those ranges. v1 of this series implied
--objects by default, but this changed in v2 due to my suggestion.
Passing --objects to count the disk-usage of all objects in those ranges
gives more reasonable numbers (and match my rough guesses, i.e., that
2.29 was busier than 2.30, and so on):
$ for range in origin/master..origin/next v2.30.0..origin/master \
v2.29.0..v2.30.0 v2.28.0..v2.29.0 v2.27.0..v2.28.0
do
printf "%s %d vs. %d\n" $range \
"$(git rev-list --objects --no-object-names $range |
git cat-file --batch-check='%(objectsize:disk)' |
paste -sd+ | bc)" \
"$(git.seen rev-list --objects --disk-usage $range)"
done
origin/master..origin/next 671380 vs. 671380
v2.30.0..origin/master 1618815 vs. 1618815
v2.29.0..v2.30.0 3308295 vs. 3308295
v2.28.0..v2.29.0 4080789 vs. 4080789
v2.27.0..v2.28.0 2846196 vs. 2846196
Thanks,
Taylor