diffcore-rename: fall back to -C when -C -C busts the rename limit
When there are too many paths in the project, the number of rename source candidates "git diff -C -C" finds will exceed the rename detection limit, and no inexact rename detection is performed. We however could fall back to "git diff -C" if the number of modified paths is sufficiently small. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@ -77,4 +77,29 @@ test_expect_success 'favour same basenames even with minor differences' '
|
||||
git show HEAD:path1 | sed "s/15/16/" > subdir/path1 &&
|
||||
git status | grep "renamed: .*path1 -> subdir/path1"'
|
||||
|
||||
test_expect_success 'setup for many rename source candidates' '
|
||||
git reset --hard &&
|
||||
for i in 0 1 2 3 4 5 6 7 8 9;
|
||||
do
|
||||
for j in 0 1 2 3 4 5 6 7 8 9;
|
||||
do
|
||||
echo "$i$j" >"path$i$j"
|
||||
done
|
||||
done &&
|
||||
git add "path??" &&
|
||||
test_tick &&
|
||||
git commit -m "hundred" &&
|
||||
(cat path1; echo new) >new-path &&
|
||||
echo old >>path1 &&
|
||||
git add new-path path1 &&
|
||||
git diff -l 4 -C -C --cached --name-status >actual 2>actual.err &&
|
||||
sed -e "s/^\([CM]\)[0-9]* /\1 /" actual >actual.munged &&
|
||||
cat >expect <<-EOF &&
|
||||
C path1 new-path
|
||||
M path1
|
||||
EOF
|
||||
test_cmp expect actual.munged &&
|
||||
grep warning actual.err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Reference in New Issue
Block a user