about summary refs log tree commit diff
path: root/third_party/git/t/t1700-split-index.sh
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/t/t1700-split-index.sh
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/t/t1700-split-index.sh')
-rwxr-xr-xthird_party/git/t/t1700-split-index.sh510
1 files changed, 0 insertions, 510 deletions
diff --git a/third_party/git/t/t1700-split-index.sh b/third_party/git/t/t1700-split-index.sh
deleted file mode 100755
index 12a556884427..000000000000
--- a/third_party/git/t/t1700-split-index.sh
+++ /dev/null
@@ -1,510 +0,0 @@
-#!/bin/sh
-
-test_description='split index mode tests'
-
-. ./test-lib.sh
-
-# We need total control of index splitting here
-sane_unset GIT_TEST_SPLIT_INDEX
-
-# Testing a hard coded SHA against an index with an extension
-# that can vary from run to run is problematic so we disable
-# those extensions.
-sane_unset GIT_TEST_FSMONITOR
-sane_unset GIT_TEST_INDEX_THREADS
-
-# Create a file named as $1 with content read from stdin.
-# Set the file's mtime to a few seconds in the past to avoid racy situations.
-create_non_racy_file () {
-	cat >"$1" &&
-	test-tool chmtime =-5 "$1"
-}
-
-test_expect_success 'setup' '
-	test_oid_cache <<-EOF
-	own_v3 sha1:8299b0bcd1ac364e5f1d7768efb62fa2da79a339
-	own_v3 sha256:38a6d2925e3eceec33ad7b34cbff4e0086caa0daf28f31e51f5bd94b4a7af86b
-
-	base_v3 sha1:39d890139ee5356c7ef572216cebcd27aa41f9df
-	base_v3 sha256:c9baeadf905112bf6c17aefbd7d02267afd70ded613c30cafed2d40cb506e1ed
-
-	own_v4 sha1:432ef4b63f32193984f339431fd50ca796493569
-	own_v4 sha256:6738ac6319c25b694afa7bcc313deb182d1a59b68bf7a47b4296de83478c0420
-
-	base_v4 sha1:508851a7f0dfa8691e9f69c7f055865389012491
-	base_v4 sha256:3177d4adfdd4b6904f7e921d91d715a471c0dde7cf6a4bba574927f02b699508
-	EOF
-'
-
-test_expect_success 'enable split index' '
-	git config splitIndex.maxPercentChange 100 &&
-	git update-index --split-index &&
-	test-tool dump-split-index .git/index >actual &&
-	indexversion=$(test-tool index-version <.git/index) &&
-
-	# NEEDSWORK: Stop hard-coding checksums.
-	if test "$indexversion" = "4"
-	then
-		own=$(test_oid own_v4)
-		base=$(test_oid base_v4)
-	else
-		own=$(test_oid own_v3)
-		base=$(test_oid base_v3)
-	fi &&
-
-	cat >expect <<-EOF &&
-	own $own
-	base $base
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'add one file' '
-	create_non_racy_file one &&
-	git update-index --add one &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	base $base
-	100644 $EMPTY_BLOB 0	one
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'disable split index' '
-	git update-index --no-split-index &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	BASE=$(test-tool dump-split-index .git/index | sed -n "s/^own/base/p") &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	not a split index
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'enable split index again, "one" now belongs to base index"' '
-	git update-index --split-index &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'modify original file, base index untouched' '
-	echo modified | create_non_racy_file one &&
-	file1_blob=$(git hash-object one) &&
-	git update-index one &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $file1_blob 0	one
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	q_to_tab >expect <<-EOF &&
-	$BASE
-	100644 $file1_blob 0Q
-	replacements: 0
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'add another file, which stays index' '
-	create_non_racy_file two &&
-	git update-index --add two &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $file1_blob 0	one
-	100644 $EMPTY_BLOB 0	two
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	q_to_tab >expect <<-EOF &&
-	$BASE
-	100644 $file1_blob 0Q
-	100644 $EMPTY_BLOB 0	two
-	replacements: 0
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'remove file not in base index' '
-	git update-index --force-remove two &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $file1_blob 0	one
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	q_to_tab >expect <<-EOF &&
-	$BASE
-	100644 $file1_blob 0Q
-	replacements: 0
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'remove file in base index' '
-	git update-index --force-remove one &&
-	git ls-files --stage >ls-files.actual &&
-	test_must_be_empty ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	replacements:
-	deletions: 0
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'add original file back' '
-	create_non_racy_file one &&
-	git update-index --add one &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	100644 $EMPTY_BLOB 0	one
-	replacements:
-	deletions: 0
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'add new file' '
-	create_non_racy_file two &&
-	git update-index --add two &&
-	git ls-files --stage >actual &&
-	cat >expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	100644 $EMPTY_BLOB 0	two
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'unify index, two files remain' '
-	git update-index --no-split-index &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	100644 $EMPTY_BLOB 0	two
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	not a split index
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'rev-parse --shared-index-path' '
-	test_create_repo split-index &&
-	(
-		cd split-index &&
-		git update-index --split-index &&
-		echo .git/sharedindex* >expect &&
-		git rev-parse --shared-index-path >actual &&
-		test_cmp expect actual &&
-		mkdir subdirectory &&
-		cd subdirectory &&
-		echo ../.git/sharedindex* >expect &&
-		git rev-parse --shared-index-path >actual &&
-		test_cmp expect actual
-	)
-'
-
-test_expect_success 'set core.splitIndex config variable to true' '
-	git config core.splitIndex true &&
-	create_non_racy_file three &&
-	git update-index --add three &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	100644 $EMPTY_BLOB 0	three
-	100644 $EMPTY_BLOB 0	two
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-	BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'set core.splitIndex config variable to false' '
-	git config core.splitIndex false &&
-	git update-index --force-remove three &&
-	git ls-files --stage >ls-files.actual &&
-	cat >ls-files.expect <<-EOF &&
-	100644 $EMPTY_BLOB 0	one
-	100644 $EMPTY_BLOB 0	two
-	EOF
-	test_cmp ls-files.expect ls-files.actual &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	not a split index
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'set core.splitIndex config variable back to true' '
-	git config core.splitIndex true &&
-	create_non_racy_file three &&
-	git update-index --add three &&
-	BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual &&
-	create_non_racy_file four &&
-	git update-index --add four &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	100644 $EMPTY_BLOB 0	four
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'check behavior with splitIndex.maxPercentChange unset' '
-	git config --unset splitIndex.maxPercentChange &&
-	create_non_racy_file five &&
-	git update-index --add five &&
-	BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual &&
-	create_non_racy_file six &&
-	git update-index --add six &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	100644 $EMPTY_BLOB 0	six
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'check splitIndex.maxPercentChange set to 0' '
-	git config splitIndex.maxPercentChange 0 &&
-	create_non_racy_file seven &&
-	git update-index --add seven &&
-	BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual &&
-	create_non_racy_file eight &&
-	git update-index --add eight &&
-	BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
-	test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
-	cat >expect <<-EOF &&
-	$BASE
-	replacements:
-	deletions:
-	EOF
-	test_cmp expect actual
-'
-
-test_expect_success 'shared index files expire after 2 weeks by default' '
-	create_non_racy_file ten &&
-	git update-index --add ten &&
-	test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
-	just_under_2_weeks_ago=$((5-14*86400)) &&
-	test-tool chmtime =$just_under_2_weeks_ago .git/sharedindex.* &&
-	create_non_racy_file eleven &&
-	git update-index --add eleven &&
-	test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
-	just_over_2_weeks_ago=$((-1-14*86400)) &&
-	test-tool chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
-	create_non_racy_file twelve &&
-	git update-index --add twelve &&
-	test $(ls .git/sharedindex.* | wc -l) -le 2
-'
-
-test_expect_success 'check splitIndex.sharedIndexExpire set to 16 days' '
-	git config splitIndex.sharedIndexExpire "16.days.ago" &&
-	test-tool chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
-	create_non_racy_file thirteen &&
-	git update-index --add thirteen &&
-	test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
-	just_over_16_days_ago=$((-1-16*86400)) &&
-	test-tool chmtime =$just_over_16_days_ago .git/sharedindex.* &&
-	create_non_racy_file fourteen &&
-	git update-index --add fourteen &&
-	test $(ls .git/sharedindex.* | wc -l) -le 2
-'
-
-test_expect_success 'check splitIndex.sharedIndexExpire set to "never" and "now"' '
-	git config splitIndex.sharedIndexExpire never &&
-	just_10_years_ago=$((-365*10*86400)) &&
-	test-tool chmtime =$just_10_years_ago .git/sharedindex.* &&
-	create_non_racy_file fifteen &&
-	git update-index --add fifteen &&
-	test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
-	git config splitIndex.sharedIndexExpire now &&
-	just_1_second_ago=-1 &&
-	test-tool chmtime =$just_1_second_ago .git/sharedindex.* &&
-	create_non_racy_file sixteen &&
-	git update-index --add sixteen &&
-	test $(ls .git/sharedindex.* | wc -l) -le 2
-'
-
-test_expect_success POSIXPERM 'same mode for index & split index' '
-	git init same-mode &&
-	(
-		cd same-mode &&
-		test_commit A &&
-		test_modebits .git/index >index_mode &&
-		test_must_fail git config core.sharedRepository &&
-		git -c core.splitIndex=true status &&
-		shared=$(ls .git/sharedindex.*) &&
-		case "$shared" in
-		*" "*)
-			# we have more than one???
-			false ;;
-		*)
-			test_modebits "$shared" >split_index_mode &&
-			test_cmp index_mode split_index_mode ;;
-		esac
-	)
-'
-
-while read -r mode modebits
-do
-	test_expect_success POSIXPERM "split index respects core.sharedrepository $mode" '
-		# Remove existing shared index files
-		git config core.splitIndex false &&
-		git update-index --force-remove one &&
-		rm -f .git/sharedindex.* &&
-		# Create one new shared index file
-		git config core.sharedrepository "$mode" &&
-		git config core.splitIndex true &&
-		create_non_racy_file one &&
-		git update-index --add one &&
-		echo "$modebits" >expect &&
-		test_modebits .git/index >actual &&
-		test_cmp expect actual &&
-		shared=$(ls .git/sharedindex.*) &&
-		case "$shared" in
-		*" "*)
-			# we have more than one???
-			false ;;
-		*)
-			test_modebits "$shared" >actual &&
-			test_cmp expect actual ;;
-		esac
-	'
-done <<\EOF
-0666 -rw-rw-rw-
-0642 -rw-r---w-
-EOF
-
-test_expect_success POSIXPERM,SANITY 'graceful handling when splitting index is not allowed' '
-	test_create_repo ro &&
-	(
-		cd ro &&
-		test_commit initial &&
-		git update-index --split-index &&
-		test -f .git/sharedindex.*
-	) &&
-	cp ro/.git/index new-index &&
-	test_when_finished "chmod u+w ro/.git" &&
-	chmod u-w ro/.git &&
-	GIT_INDEX_FILE="$(pwd)/new-index" git -C ro update-index --split-index &&
-	chmod u+w ro/.git &&
-	rm ro/.git/sharedindex.* &&
-	GIT_INDEX_FILE=new-index git ls-files >actual &&
-	echo initial.t >expected &&
-	test_cmp expected actual
-'
-
-test_expect_success 'writing split index with null sha1 does not write cache tree' '
-	git config core.splitIndex true &&
-	git config splitIndex.maxPercentChange 0 &&
-	git commit -m "commit" &&
-	{
-		git ls-tree HEAD &&
-		printf "160000 commit $ZERO_OID\\tbroken\\n"
-	} >broken-tree &&
-	echo "add broken entry" >msg &&
-
-	tree=$(git mktree <broken-tree) &&
-	test_tick &&
-	commit=$(git commit-tree $tree -p HEAD <msg) &&
-	git update-ref HEAD "$commit" &&
-	GIT_ALLOW_NULL_SHA1=1 git reset --hard &&
-	test_might_fail test-tool dump-cache-tree >cache-tree.out &&
-	test_line_count = 0 cache-tree.out
-'
-
-test_expect_success 'do not refresh null base index' '
-	test_create_repo merge &&
-	(
-		cd merge &&
-		test_commit initial &&
-		git checkout -b side-branch &&
-		test_commit extra &&
-		git checkout master &&
-		git update-index --split-index &&
-		test_commit more &&
-		# must not write a new shareindex, or we wont catch the problem
-		git -c splitIndex.maxPercentChange=100 merge --no-edit side-branch 2>err &&
-		# i.e. do not expect warnings like
-		# could not freshen shared index .../shareindex.00000...
-		test_must_be_empty err
-	)
-'
-
-test_done