2014-06-13 16:19:51 +04:00
|
|
|
#!/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 &&
|
2015-03-20 21:20:30 +03:00
|
|
|
indexversion=$(test-index-version <.git/index) &&
|
|
|
|
if test "$indexversion" = "4"
|
|
|
|
then
|
|
|
|
own=432ef4b63f32193984f339431fd50ca796493569
|
|
|
|
base=508851a7f0dfa8691e9f69c7f055865389012491
|
|
|
|
else
|
|
|
|
own=8299b0bcd1ac364e5f1d7768efb62fa2da79a339
|
|
|
|
base=39d890139ee5356c7ef572216cebcd27aa41f9df
|
|
|
|
fi &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
own $own
|
|
|
|
base $base
|
|
|
|
replacements:
|
|
|
|
deletions:
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'add one file' '
|
|
|
|
: >one &&
|
|
|
|
git update-index --add one &&
|
|
|
|
git ls-files --stage >ls-files.actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
base $base
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
replacements:
|
|
|
|
deletions:
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'disable split index' '
|
|
|
|
git update-index --no-split-index &&
|
|
|
|
git ls-files --stage >ls-files.actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
2015-12-22 18:05:51 +03:00
|
|
|
BASE=$(test-dump-split-index .git/index | grep "^own" | sed "s/own/base/") &&
|
2014-06-13 16:19:51 +04:00
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
not a split index
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
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 &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
$BASE
|
|
|
|
replacements:
|
|
|
|
deletions:
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
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 &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0 one
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
q_to_tab >expect <<-EOF &&
|
|
|
|
$BASE
|
|
|
|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
|
|
|
|
replacements: 0
|
|
|
|
deletions:
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
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 &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0 one
|
|
|
|
100644 $EMPTY_BLOB 0 two
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
q_to_tab >expect <<-EOF &&
|
|
|
|
$BASE
|
|
|
|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
|
|
|
|
100644 $EMPTY_BLOB 0 two
|
|
|
|
replacements: 0
|
|
|
|
deletions:
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
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 &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0 one
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
q_to_tab >expect <<-EOF &&
|
|
|
|
$BASE
|
|
|
|
100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
|
|
|
|
replacements: 0
|
|
|
|
deletions:
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
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 &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
$BASE
|
|
|
|
replacements:
|
|
|
|
deletions: 0
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'add original file back' '
|
|
|
|
: >one &&
|
|
|
|
git update-index --add one &&
|
|
|
|
git ls-files --stage >ls-files.actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
$BASE
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
replacements:
|
|
|
|
deletions: 0
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'add new file' '
|
|
|
|
: >two &&
|
|
|
|
git update-index --add two &&
|
|
|
|
git ls-files --stage >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
100644 $EMPTY_BLOB 0 two
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
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 &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >ls-files.expect <<-EOF &&
|
|
|
|
100644 $EMPTY_BLOB 0 one
|
|
|
|
100644 $EMPTY_BLOB 0 two
|
|
|
|
EOF
|
2015-03-20 13:06:15 +03:00
|
|
|
test_cmp ls-files.expect ls-files.actual &&
|
2014-06-13 16:19:51 +04:00
|
|
|
|
|
|
|
test-dump-split-index .git/index | sed "/^own/d" >actual &&
|
2017-02-27 20:59:59 +03:00
|
|
|
cat >expect <<-EOF &&
|
|
|
|
not a split index
|
|
|
|
EOF
|
2014-06-13 16:19:51 +04:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_done
|