about summary refs log tree commit diff
path: root/third_party/git/t/perf/lib-pack.sh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/t/perf/lib-pack.sh')
-rw-r--r--third_party/git/t/perf/lib-pack.sh25
1 files changed, 25 insertions, 0 deletions
diff --git a/third_party/git/t/perf/lib-pack.sh b/third_party/git/t/perf/lib-pack.sh
new file mode 100644
index 000000000000..d3865db286fc
--- /dev/null
+++ b/third_party/git/t/perf/lib-pack.sh
@@ -0,0 +1,25 @@
+# Helpers for dealing with large numbers of packs.
+
+# create $1 nonsense packs, each with a single blob
+create_packs () {
+	perl -le '
+		my ($n) = @ARGV;
+		for (1..$n) {
+			print "blob";
+			print "data <<EOF";
+			print "$_";
+			print "EOF";
+			print "checkpoint"
+		}
+	' "$@" |
+	git fast-import
+}
+
+# create a large number of packs, disabling any gc which might
+# cause us to repack them
+setup_many_packs () {
+	git config gc.auto 0 &&
+	git config gc.autopacklimit 0 &&
+	git config fastimport.unpacklimit 0 &&
+	create_packs 500
+}