docs/rev-list: add some examples of --disk-usage
It's not immediately obvious why --disk-usage might be a useful thing. These examples show off a few of the real-world cases I've used it for. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Feb 17, 2021 at 18:35 UTC
a1db097e107749cf6f1c2dc878c615ca2d3fb314
1 file changed
+41
Documentation/git-rev-list.txt
+41
@@ -83,6 +83,47 @@ git rev-list --author=you@example.com --since=1.year.ago --all
83
git rev-list --objects HEAD
84
----------
85
86
+* Compare the disk size of all reachable objects, versus those
87
+ reachable from reflogs, versus the total packed size. This can tell
88
+ you whether running `git repack -ad` might reduce the repository size
89
+ (by dropping unreachable objects), and whether expiring reflogs might
90
+ help.
91
++
92
+----------
93
+# reachable objects
94
+git rev-list --disk-usage --objects --all
95
+# plus reflogs
96
+git rev-list --disk-usage --objects --all --reflog
97
+# total disk size used
98
+du -c .git/objects/pack/*.pack .git/objects/??/*
99
+# alternative to du: add up "size" and "size-pack" fields
100
+git count-objects -v
101
+----------
102
+
103
+* Report the disk size of each branch, not including objects used by the
104
+ current branch. This can find outliers that are contributing to a
105
+ bloated repository size (e.g., because somebody accidentally committed
106
+ large build artifacts).
107
++
108
+----------
109
+git for-each-ref --format='%(refname)' |
110
+while read branch
111
+do
112
+ size=$(git rev-list --disk-usage --objects HEAD..$branch)
113
+ echo "$size $branch"
114
+done |
115
+sort -n
116
+----------
117
+
118
+* Compare the on-disk size of branches in one group of refs, excluding
119
+ another. If you co-mingle objects from multiple remotes in a single
120
+ repository, this can show which remotes are contributing to the
121
+ repository size (taking the size of `origin` as a baseline).
122
++
123
+----------
124
+git rev-list --disk-usage --objects --remotes=$suspect --not --remotes=origin
125
+----------
126
+
127
GIT
128
---
129
Part of the linkgit:git[1] suite