git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
blob 08aa50a724e8a96fc41e390712ce57d1dd1dc695 5065 bytes (raw)
name: t/t7900-maintenance.sh 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
 
#!/bin/sh

test_description='git maintenance builtin'

GIT_TEST_COMMIT_GRAPH=0
GIT_TEST_MULTI_PACK_INDEX=0

. ./test-lib.sh

test_expect_success 'help text' '
	test_must_fail git maintenance -h 2>err &&
	test_i18ngrep "usage: git maintenance run" err
'

test_expect_success 'run [--auto|--quiet]' '
	GIT_TRACE2_EVENT="$(pwd)/run-no-auto.txt" git maintenance run --no-quiet &&
	GIT_TRACE2_EVENT="$(pwd)/run-auto.txt" git maintenance run --auto &&
	GIT_TRACE2_EVENT="$(pwd)/run-quiet.txt" git maintenance run --quiet &&
	grep ",\"gc\"]" run-no-auto.txt  &&
	grep ",\"gc\",\"--auto\"" run-auto.txt &&
	grep ",\"gc\",\"--quiet\"" run-quiet.txt
'

test_expect_success 'maintenance.<task>.enabled' '
	git config maintenance.gc.enabled false &&
	git config maintenance.commit-graph.enabled true &&
	git config maintenance.loose-objects.enabled true &&
	GIT_TRACE2_EVENT="$(pwd)/run-config.txt" git maintenance run &&
	! grep ",\"fetch\"" run-config.txt &&
	! grep ",\"gc\"" run-config.txt &&
	! grep ",\"multi-pack-index\"" run-config.txt &&
	grep ",\"commit-graph\"" run-config.txt &&
	grep ",\"prune-packed\"" run-config.txt
'

test_expect_success 'run --task=<task>' '
	GIT_TRACE2_EVENT="$(pwd)/run-commit-graph.txt" git maintenance run --task=commit-graph &&
	GIT_TRACE2_EVENT="$(pwd)/run-gc.txt" git maintenance run --task=gc &&
	GIT_TRACE2_EVENT="$(pwd)/run-commit-graph.txt" git maintenance run --task=commit-graph &&
	GIT_TRACE2_EVENT="$(pwd)/run-both.txt" git maintenance run --task=commit-graph --task=gc &&
	! grep ",\"gc\"" run-commit-graph.txt  &&
	grep ",\"gc\"" run-gc.txt  &&
	grep ",\"gc\"" run-both.txt  &&
	grep ",\"commit-graph\",\"write\"" run-commit-graph.txt  &&
	! grep ",\"commit-graph\",\"write\"" run-gc.txt  &&
	grep ",\"commit-graph\",\"write\"" run-both.txt
'

test_expect_success 'run --task=bogus' '
	test_must_fail git maintenance run --task=bogus 2>err &&
	test_i18ngrep "is not a valid task" err
'

test_expect_success 'run --task duplicate' '
	test_must_fail git maintenance run --task=gc --task=gc 2>err &&
	test_i18ngrep "cannot be selected multiple times" err
'

test_expect_success 'run --task=fetch with no remotes' '
	git maintenance run --task=fetch 2>err &&
	test_must_be_empty err
'

test_expect_success 'fetch multiple remotes' '
	git clone . clone1 &&
	git clone . clone2 &&
	git remote add remote1 "file://$(pwd)/clone1" &&
	git remote add remote2 "file://$(pwd)/clone2" &&
	git -C clone1 switch -c one &&
	git -C clone2 switch -c two &&
	test_commit -C clone1 one &&
	test_commit -C clone2 two &&
	GIT_TRACE2_EVENT="$(pwd)/run-fetch.txt" git maintenance run --task=fetch &&
	grep ",\"fetch\",\"remote1\"" run-fetch.txt &&
	grep ",\"fetch\",\"remote2\"" run-fetch.txt &&
	test_path_is_missing .git/refs/remotes &&
	test_cmp clone1/.git/refs/heads/one .git/refs/hidden/remote1/one &&
	test_cmp clone2/.git/refs/heads/two .git/refs/hidden/remote2/two &&
	git log hidden/remote1/one &&
	git log hidden/remote2/two
'

test_expect_success 'loose-objects task' '
	# Repack everything so we know the state of the object dir
	git repack -adk &&

	# Hack to stop maintenance from running during "git commit"
	echo in use >.git/objects/maintenance.lock &&
	test_commit create-loose-object &&
	rm .git/objects/maintenance.lock &&

	ls .git/objects >obj-dir-before &&
	test_file_not_empty obj-dir-before &&
	ls .git/objects/pack/*.pack >packs-before &&
	test_line_count = 1 packs-before &&

	# The first run creates a pack-file
	# but does not delete loose objects.
	git maintenance run --task=loose-objects &&
	ls .git/objects >obj-dir-between &&
	test_cmp obj-dir-before obj-dir-between &&
	ls .git/objects/pack/*.pack >packs-between &&
	test_line_count = 2 packs-between &&

	# The second run deletes loose objects
	# but does not create a pack-file.
	git maintenance run --task=loose-objects &&
	ls .git/objects >obj-dir-after &&
	cat >expect <<-\EOF &&
	info
	pack
	EOF
	test_cmp expect obj-dir-after &&
	ls .git/objects/pack/*.pack >packs-after &&
	test_cmp packs-between packs-after
'

test_expect_success 'pack-files task' '
	packDir=.git/objects/pack &&
	for i in $(test_seq 1 5)
	do
		test_commit $i || return 1
	done &&

	# Create three disjoint pack-files with size BIG, small, small.
	echo HEAD~2 | git pack-objects --revs $packDir/test-1 &&
	test_tick &&
	git pack-objects --revs $packDir/test-2 <<-\EOF &&
	HEAD~1
	^HEAD~2
	EOF
	test_tick &&
	git pack-objects --revs $packDir/test-3 <<-\EOF &&
	HEAD
	^HEAD~1
	EOF
	rm -f $packDir/pack-* &&
	rm -f $packDir/loose-* &&
	ls $packDir/*.pack >packs-before &&
	test_line_count = 3 packs-before &&

	# the job repacks the two into a new pack, but does not
	# delete the old ones.
	git maintenance run --task=pack-files &&
	ls $packDir/*.pack >packs-between &&
	test_line_count = 4 packs-between &&

	# the job deletes the two old packs, and does not write
	# a new one because the batch size is not high enough to
	# pack the largest pack-file.
	git maintenance run --task=pack-files &&
	ls .git/objects/pack/*.pack >packs-after &&
	test_line_count = 2 packs-after
'

test_done

debug log:

solving 08aa50a724 ...
found 08aa50a724 in https://public-inbox.org/git/1551aec4fd55b26601aa8673bee946c7ce7438a6.1594131695.git.gitgitgadget@gmail.com/
found 43d32c131b in https://public-inbox.org/git/8be89707d2d5a8b527e104a2aeadb5ea7f65d476.1594131695.git.gitgitgadget@gmail.com/
found a6be8456aa in https://public-inbox.org/git/f98790024f10b70cbd2d88cb09126c5a83c9c400.1594131695.git.gitgitgadget@gmail.com/
found 8cb33624c6 in https://public-inbox.org/git/66a1f662cee7a1ae18df6e93c70b481157eb2494.1594131695.git.gitgitgadget@gmail.com/
found 0abfc4a9da in https://public-inbox.org/git/cbaa5ecc4f23eed0823fbbb53ffef28c9f7d6913.1594131695.git.gitgitgadget@gmail.com/
found c09a9eb90b in https://public-inbox.org/git/c081a3bd293383da92041f0b8991e151303d9e56.1594131695.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/a09b1c16874c0fad6dd0df3ace573a2ffe34519e.1595527000.git.gitgitgadget@gmail.com/
found 216ac0b19e in https://public-inbox.org/git/04552b1d2ed751a11eb7c50f6898cbc078b552b4.1595527000.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/c8fbd14d41093e12905027ff628b98652cd931d0.1594131695.git.gitgitgadget@gmail.com/
found e4e4036e50 in https://public-inbox.org/git/018a9331e204fd6b1b92f5b53f3f373fa9e23bc2.1594131695.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/1d37e55cb714ea579744d28d1aeb332a63815342.1595527000.git.gitgitgadget@gmail.com/
found d00641c4dd in https://public-inbox.org/git/5f89e0ec9b9c9a02deed5b79b35253e0462dc87c.1594131695.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/63ec602a07756a41f8ccddd745562c567a4b3ed7.1595527000.git.gitgitgadget@gmail.com/

applying [1/9] https://public-inbox.org/git/5f89e0ec9b9c9a02deed5b79b35253e0462dc87c.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
new file mode 100755
index 0000000000..d00641c4dd

Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.

skipping https://public-inbox.org/git/63ec602a07756a41f8ccddd745562c567a4b3ed7.1595527000.git.gitgitgadget@gmail.com/ for d00641c4dd
index at:
100755 d00641c4dd24723450ec2e3b4246e682d4fb7307	t/t7900-maintenance.sh

applying [2/9] https://public-inbox.org/git/018a9331e204fd6b1b92f5b53f3f373fa9e23bc2.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index d00641c4dd..e4e4036e50 100755

Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.

skipping https://public-inbox.org/git/1d37e55cb714ea579744d28d1aeb332a63815342.1595527000.git.gitgitgadget@gmail.com/ for e4e4036e50
index at:
100755 e4e4036e50bdf5f8a20357feb4f7c575034f98ad	t/t7900-maintenance.sh

applying [3/9] https://public-inbox.org/git/04552b1d2ed751a11eb7c50f6898cbc078b552b4.1595527000.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index e4e4036e50..216ac0b19e 100755

Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.

skipping https://public-inbox.org/git/c8fbd14d41093e12905027ff628b98652cd931d0.1594131695.git.gitgitgadget@gmail.com/ for 216ac0b19e
index at:
100755 216ac0b19e72f47650d1fb4bec9a8a133f7003a1	t/t7900-maintenance.sh

applying [4/9] https://public-inbox.org/git/c081a3bd293383da92041f0b8991e151303d9e56.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 216ac0b19e..c09a9eb90b 100755

Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.

skipping https://public-inbox.org/git/a09b1c16874c0fad6dd0df3ace573a2ffe34519e.1595527000.git.gitgitgadget@gmail.com/ for c09a9eb90b
index at:
100755 c09a9eb90b06e51dfca3a3c4555f7fdf059a6be4	t/t7900-maintenance.sh

applying [5/9] https://public-inbox.org/git/cbaa5ecc4f23eed0823fbbb53ffef28c9f7d6913.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index c09a9eb90b..0abfc4a9da 100755


applying [6/9] https://public-inbox.org/git/66a1f662cee7a1ae18df6e93c70b481157eb2494.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 0abfc4a9da..8cb33624c6 100755


applying [7/9] https://public-inbox.org/git/f98790024f10b70cbd2d88cb09126c5a83c9c400.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 8cb33624c6..a6be8456aa 100755


applying [8/9] https://public-inbox.org/git/8be89707d2d5a8b527e104a2aeadb5ea7f65d476.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index a6be8456aa..43d32c131b 100755


applying [9/9] https://public-inbox.org/git/1551aec4fd55b26601aa8673bee946c7ce7438a6.1594131695.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 43d32c131b..08aa50a724 100755

Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.
Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.
Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.
Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.
Checking patch t/t7900-maintenance.sh...
Applied patch t/t7900-maintenance.sh cleanly.

index at:
100755 08aa50a724e8a96fc41e390712ce57d1dd1dc695	t/t7900-maintenance.sh

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).