90 lines
1.7 KiB
Bash
Executable File
90 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2010 Bo Yang
|
|
#
|
|
|
|
test_description='Test --follow should always find copies hard in git log.
|
|
|
|
'
|
|
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/lib-diff.sh
|
|
|
|
echo >path0 'Line 1
|
|
Line 2
|
|
Line 3
|
|
'
|
|
|
|
test_expect_success 'add a file path0 and commit.' '
|
|
git add path0 &&
|
|
git commit -m "Add path0"
|
|
'
|
|
|
|
echo >path0 'New line 1
|
|
New line 2
|
|
New line 3
|
|
'
|
|
test_expect_success 'Change path0.' '
|
|
git add path0 &&
|
|
git commit -m "Change path0"
|
|
'
|
|
|
|
cat <path0 >path1
|
|
test_expect_success 'copy path0 to path1.' '
|
|
git add path1 &&
|
|
git commit -m "Copy path1 from path0"
|
|
'
|
|
|
|
test_expect_success 'find the copy path0 -> path1 harder' '
|
|
git log --follow --name-status --pretty="format:%s" path1 > current
|
|
'
|
|
|
|
cat >expected <<\EOF
|
|
Copy path1 from path0
|
|
C100 path0 path1
|
|
|
|
Change path0
|
|
M path0
|
|
|
|
Add path0
|
|
A path0
|
|
EOF
|
|
|
|
test_expect_success 'validate the output.' '
|
|
compare_diff_patch current expected
|
|
'
|
|
|
|
test_expect_success 'log --follow -B does not BUG' '
|
|
git switch --orphan break_and_follow_are_icky_so_use_both &&
|
|
|
|
test_seq 1 127 >numbers &&
|
|
git add numbers &&
|
|
git commit -m "numbers" &&
|
|
|
|
printf "%s\n" A B C D E F G H I J K L M N O Q R S T U V W X Y Z >pool &&
|
|
echo changed >numbers &&
|
|
git add pool numbers &&
|
|
git commit -m "pool" &&
|
|
|
|
git log -1 -B --raw --follow -- "p*"
|
|
'
|
|
|
|
test_expect_success 'log --follow -B does not die or use uninitialized memory' '
|
|
printf "%s\n" A B C D E F G H I J K L M N O P Q R S T U V W X Y Z >z &&
|
|
git add z &&
|
|
git commit -m "Initial" &&
|
|
|
|
test_seq 1 130 >z &&
|
|
echo lame >somefile &&
|
|
git add z somefile &&
|
|
git commit -m "Rewrite z, introduce lame somefile" &&
|
|
|
|
echo Content >somefile &&
|
|
git add somefile &&
|
|
git commit -m "Rewrite somefile" &&
|
|
|
|
git log -B --follow somefile
|
|
'
|
|
|
|
test_done
|