git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
8d54f93a104eb545d880632e5e84743e9c768c03 blob 4589 bytes (raw)

  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
 
#!/bin/sh

test_description='git maintenance builtin'

. ./test-lib.sh

GIT_TEST_COMMIT_GRAPH=0

test_expect_success 'help text' '
	test_expect_code 129 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 2>/dev/null &&
	GIT_TRACE2_EVENT="$(pwd)/run-auto.txt" \
		git maintenance run --auto 2>/dev/null &&
	GIT_TRACE2_EVENT="$(pwd)/run-no-quiet.txt" \
		git maintenance run --no-quiet 2>/dev/null &&
	test_subcommand git gc --quiet <run-no-auto.txt &&
	test_subcommand ! git gc --auto --quiet <run-auto.txt &&
	test_subcommand git gc --no-quiet <run-no-quiet.txt
'

test_expect_success 'maintenance.<task>.enabled' '
	git config maintenance.gc.enabled false &&
	git config maintenance.commit-graph.enabled true &&
	GIT_TRACE2_EVENT="$(pwd)/run-config.txt" git maintenance run 2>err &&
	test_subcommand ! git gc --quiet <run-config.txt &&
	test_subcommand git commit-graph write --split --reachable --no-progress <run-config.txt
'

test_expect_success 'run --task=<task>' '
	GIT_TRACE2_EVENT="$(pwd)/run-commit-graph.txt" \
		git maintenance run --task=commit-graph 2>/dev/null &&
	GIT_TRACE2_EVENT="$(pwd)/run-gc.txt" \
		git maintenance run --task=gc 2>/dev/null &&
	GIT_TRACE2_EVENT="$(pwd)/run-commit-graph.txt" \
		git maintenance run --task=commit-graph 2>/dev/null &&
	GIT_TRACE2_EVENT="$(pwd)/run-both.txt" \
		git maintenance run --task=commit-graph --task=gc 2>/dev/null &&
	test_subcommand ! git gc --quiet <run-commit-graph.txt &&
	test_subcommand git gc --quiet <run-gc.txt &&
	test_subcommand git gc --quiet <run-both.txt &&
	test_subcommand git commit-graph write --split --reachable --no-progress <run-commit-graph.txt &&
	test_subcommand ! git commit-graph write --split --reachable --no-progress <run-gc.txt &&
	test_subcommand git commit-graph write --split --reachable --no-progress <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=prefetch with no remotes' '
	git maintenance run --task=prefetch 2>err &&
	test_must_be_empty err
'

test_expect_success 'prefetch 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-prefetch.txt" git maintenance run --task=prefetch 2>/dev/null &&
	fetchargs="--prune --no-tags --no-write-fetch-head --refmap= --quiet" &&
	test_subcommand git fetch remote1 $fetchargs +refs/heads/\\*:refs/prefetch/remote1/\\* <run-prefetch.txt &&
	test_subcommand git fetch remote2 $fetchargs +refs/heads/\\*:refs/prefetch/remote2/\\* <run-prefetch.txt &&
	test_path_is_missing .git/refs/remotes &&
	test_cmp clone1/.git/refs/heads/one .git/refs/prefetch/remote1/one &&
	test_cmp clone2/.git/refs/heads/two .git/refs/prefetch/remote2/two &&
	git log prefetch/remote1/one &&
	git log prefetch/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 &&

	# Assuming that "git commit" creates at least one loose object
	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 &&
	ls .git/objects/pack/loose-*.pack >loose-packs &&
	test_line_count = 1 loose-packs &&

	# 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_done
debug log:

solving 8d54f93a10 ...
found 8d54f93a10 in https://public-inbox.org/git/621375a3c99014c48568660bde062b7330d5a662.1596731425.git.gitgitgadget@gmail.com/
found 3dd99ef660 in https://public-inbox.org/git/85118ed5f19468d5051dd1579e35cae3c3114d24.1596731425.git.gitgitgadget@gmail.com/
found 406dc7c303 in https://public-inbox.org/git/df21bbb0005c0fa39917e326213423a9399308ab.1596728921.git.gitgitgadget@gmail.com/
found cdf0bf2e60 in https://public-inbox.org/git/69bfc6a4b2bb1a86788e69a2a3ac6134085aa798.1596728921.git.gitgitgadget@gmail.com/
found bcc7131818 in https://public-inbox.org/git/dddbcc4f3d28e2c00f153007b7db40733dbd572d.1596728921.git.gitgitgadget@gmail.com/
found 384294d111 in https://public-inbox.org/git/902b742032ae19087392538936cc81768a59e0e1.1596728921.git.gitgitgadget@gmail.com/
found 7b63b4ec0c in https://public-inbox.org/git/d5faef26af8896dc7a82c2b809a3af2724da8afd.1596728921.git.gitgitgadget@gmail.com/
found c4b9b4a6fe in https://public-inbox.org/git/2b9deb6d6a23e53bec75e109f2e3ef9217420425.1596728921.git.gitgitgadget@gmail.com/

applying [1/8] https://public-inbox.org/git/2b9deb6d6a23e53bec75e109f2e3ef9217420425.1596728921.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
new file mode 100755
index 0000000000..c4b9b4a6fe


applying [2/8] https://public-inbox.org/git/d5faef26af8896dc7a82c2b809a3af2724da8afd.1596728921.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index c4b9b4a6fe..7b63b4ec0c 100755


applying [3/8] https://public-inbox.org/git/902b742032ae19087392538936cc81768a59e0e1.1596728921.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 7b63b4ec0c..384294d111 100755


applying [4/8] https://public-inbox.org/git/dddbcc4f3d28e2c00f153007b7db40733dbd572d.1596728921.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 384294d111..bcc7131818 100755


applying [5/8] https://public-inbox.org/git/69bfc6a4b2bb1a86788e69a2a3ac6134085aa798.1596728921.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index bcc7131818..cdf0bf2e60 100755


applying [6/8] https://public-inbox.org/git/df21bbb0005c0fa39917e326213423a9399308ab.1596728921.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index cdf0bf2e60..406dc7c303 100755


applying [7/8] https://public-inbox.org/git/85118ed5f19468d5051dd1579e35cae3c3114d24.1596731425.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 406dc7c303..3dd99ef660 100755


applying [8/8] https://public-inbox.org/git/621375a3c99014c48568660bde062b7330d5a662.1596731425.git.gitgitgadget@gmail.com/
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 3dd99ef660..8d54f93a10 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.
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 8d54f93a104eb545d880632e5e84743e9c768c03	t/t7900-maintenance.sh

Code repositories for project(s) associated with this 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).