Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			195 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 | 
						|
 | 
						|
test_expect_success 'enable split index' '
 | 
						|
	git update-index --split-index &&
 | 
						|
	test-dump-split-index .git/index >actual &&
 | 
						|
	cat >expect <<EOF &&
 | 
						|
own 8299b0bcd1ac364e5f1d7768efb62fa2da79a339
 | 
						|
base 39d890139ee5356c7ef572216cebcd27aa41f9df
 | 
						|
replacements:
 | 
						|
deletions:
 | 
						|
EOF
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'add one file' '
 | 
						|
	: >one &&
 | 
						|
	git update-index --add one &&
 | 
						|
	git ls-files --stage >ls-files.actual &&
 | 
						|
	cat >ls-files.expect <<EOF &&
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	one
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | 
						|
	cat >expect <<EOF &&
 | 
						|
base 39d890139ee5356c7ef572216cebcd27aa41f9df
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	one
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	BASE=`test-dump-split-index .git/index | grep "^own" | sed "s/own/base/"` &&
 | 
						|
	test-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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	one
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	test-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 >one &&
 | 
						|
	git update-index one &&
 | 
						|
	git ls-files --stage >ls-files.actual &&
 | 
						|
	cat >ls-files.expect <<EOF &&
 | 
						|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0	one
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | 
						|
	q_to_tab >expect <<EOF &&
 | 
						|
$BASE
 | 
						|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
 | 
						|
replacements: 0
 | 
						|
deletions:
 | 
						|
EOF
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'add another file, which stays index' '
 | 
						|
	: >two &&
 | 
						|
	git update-index --add two &&
 | 
						|
	git ls-files --stage >ls-files.actual &&
 | 
						|
	cat >ls-files.expect <<EOF &&
 | 
						|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0	one
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	two
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | 
						|
	q_to_tab >expect <<EOF &&
 | 
						|
$BASE
 | 
						|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0	one
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | 
						|
	q_to_tab >expect <<EOF &&
 | 
						|
$BASE
 | 
						|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 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 &&
 | 
						|
	cat >ls-files.expect <<EOF &&
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	test-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' '
 | 
						|
	: >one &&
 | 
						|
	git update-index --add one &&
 | 
						|
	git ls-files --stage >ls-files.actual &&
 | 
						|
	cat >ls-files.expect <<EOF &&
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	one
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual &&
 | 
						|
 | 
						|
	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | 
						|
	cat >expect <<EOF &&
 | 
						|
$BASE
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	one
 | 
						|
replacements:
 | 
						|
deletions: 0
 | 
						|
EOF
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'add new file' '
 | 
						|
	: >two &&
 | 
						|
	git update-index --add two &&
 | 
						|
	git ls-files --stage >actual &&
 | 
						|
	cat >expect <<EOF &&
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	one
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	one
 | 
						|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	two
 | 
						|
EOF
 | 
						|
	test_cmp ls-files.expect ls-files.actual
 | 
						|
 | 
						|
	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | 
						|
	cat >expect <<EOF &&
 | 
						|
not a split index
 | 
						|
EOF
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |