summaryrefslogtreecommitdiff
path: root/Documentation/git-rev-list.txt
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2021-02-17 23:35:33 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-02-18 00:25:29 (GMT)
commita1db097e107749cf6f1c2dc878c615ca2d3fb314 (patch)
tree9da221e38bc1da3720bc2d722bd6ce6faf8a03e6 /Documentation/git-rev-list.txt
parent669b4587555597da7f2a875b95dc50f503b8187f (diff)
downloadgit-a1db097e107749cf6f1c2dc878c615ca2d3fb314.zip
git-a1db097e107749cf6f1c2dc878c615ca2d3fb314.tar.gz
git-a1db097e107749cf6f1c2dc878c615ca2d3fb314.tar.bz2
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>
Diffstat (limited to 'Documentation/git-rev-list.txt')
-rw-r--r--Documentation/git-rev-list.txt41
1 files changed, 41 insertions, 0 deletions
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index d7ff519..20bb8e8 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -83,6 +83,47 @@ git rev-list --author=you@example.com --since=1.year.ago --all
git rev-list --objects HEAD
----------
+* Compare the disk size of all reachable objects, versus those
+ reachable from reflogs, versus the total packed size. This can tell
+ you whether running `git repack -ad` might reduce the repository size
+ (by dropping unreachable objects), and whether expiring reflogs might
+ help.
++
+----------
+# reachable objects
+git rev-list --disk-usage --objects --all
+# plus reflogs
+git rev-list --disk-usage --objects --all --reflog
+# total disk size used
+du -c .git/objects/pack/*.pack .git/objects/??/*
+# alternative to du: add up "size" and "size-pack" fields
+git count-objects -v
+----------
+
+* Report the disk size of each branch, not including objects used by the
+ current branch. This can find outliers that are contributing to a
+ bloated repository size (e.g., because somebody accidentally committed
+ large build artifacts).
++
+----------
+git for-each-ref --format='%(refname)' |
+while read branch
+do
+ size=$(git rev-list --disk-usage --objects HEAD..$branch)
+ echo "$size $branch"
+done |
+sort -n
+----------
+
+* Compare the on-disk size of branches in one group of refs, excluding
+ another. If you co-mingle objects from multiple remotes in a single
+ repository, this can show which remotes are contributing to the
+ repository size (taking the size of `origin` as a baseline).
++
+----------
+git rev-list --disk-usage --objects --remotes=$suspect --not --remotes=origin
+----------
+
GIT
---
Part of the linkgit:git[1] suite