mirror of
https://github.com/git/git.git
synced 2024-11-29 13:06:07 +08:00
622f98e272
In t4023 and t4114, we have to remove the entries using 'git rm' because otherwise the entries that must turn from symbolic links to regular files would stay symbolic links in the index. For the same reason, we have to use 'git mv' instead of plain 'mv' in t3509. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
87 lines
1.7 KiB
Bash
Executable File
87 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='typechange rename detection'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
|
|
rm -f foo bar &&
|
|
cat "$TEST_DIRECTORY"/../COPYING >foo &&
|
|
test_ln_s_add linklink bar &&
|
|
git add foo &&
|
|
git commit -a -m Initial &&
|
|
git tag one &&
|
|
|
|
git rm -f foo bar &&
|
|
cat "$TEST_DIRECTORY"/../COPYING >bar &&
|
|
test_ln_s_add linklink foo &&
|
|
git add bar &&
|
|
git commit -a -m Second &&
|
|
git tag two &&
|
|
|
|
git rm -f foo bar &&
|
|
cat "$TEST_DIRECTORY"/../COPYING >foo &&
|
|
git add foo &&
|
|
git commit -a -m Third &&
|
|
git tag three &&
|
|
|
|
mv foo bar &&
|
|
test_ln_s_add linklink foo &&
|
|
git add bar &&
|
|
git commit -a -m Fourth &&
|
|
git tag four &&
|
|
|
|
# This is purely for sanity check
|
|
|
|
git rm -f foo bar &&
|
|
cat "$TEST_DIRECTORY"/../COPYING >foo &&
|
|
cat "$TEST_DIRECTORY"/../Makefile >bar &&
|
|
git add foo bar &&
|
|
git commit -a -m Fifth &&
|
|
git tag five &&
|
|
|
|
git rm -f foo bar &&
|
|
cat "$TEST_DIRECTORY"/../Makefile >foo &&
|
|
cat "$TEST_DIRECTORY"/../COPYING >bar &&
|
|
git add foo bar &&
|
|
git commit -a -m Sixth &&
|
|
git tag six
|
|
|
|
'
|
|
|
|
test_expect_success 'cross renames to be detected for regular files' '
|
|
|
|
git diff-tree five six -r --name-status -B -M | sort >actual &&
|
|
{
|
|
echo "R100 foo bar"
|
|
echo "R100 bar foo"
|
|
} | sort >expect &&
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
test_expect_success 'cross renames to be detected for typechange' '
|
|
|
|
git diff-tree one two -r --name-status -B -M | sort >actual &&
|
|
{
|
|
echo "R100 foo bar"
|
|
echo "R100 bar foo"
|
|
} | sort >expect &&
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
test_expect_success 'moves and renames' '
|
|
|
|
git diff-tree three four -r --name-status -B -M | sort >actual &&
|
|
{
|
|
echo "R100 foo bar"
|
|
echo "T100 foo"
|
|
} | sort >expect &&
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
test_done
|