93a7d9835f
During a merge conflict, the name of a file may appear multiple times in "git ls-files" output, once for each stage. If you use both `--delete` and `--modify` at the same time, the output may mention a deleted file twice. When none of the '-t', '-u', or '-s' options is in use, these duplicate entries do not add much value to the output. Introduce a new '--deduplicate' option to suppress them. Signed-off-by: ZheNing Hu <adlternative@gmail.com> [jc: extended doc and rewritten commit log] Signed-off-by: Junio C Hamano <gitster@pobox.com>
67 lines
1.3 KiB
Bash
Executable File
67 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git ls-files --deduplicate test'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
>a.txt &&
|
|
>b.txt &&
|
|
>delete.txt &&
|
|
git add a.txt b.txt delete.txt &&
|
|
git commit -m base &&
|
|
echo a >a.txt &&
|
|
echo b >b.txt &&
|
|
echo delete >delete.txt &&
|
|
git add a.txt b.txt delete.txt &&
|
|
git commit -m tip &&
|
|
git tag tip &&
|
|
git reset --hard HEAD^ &&
|
|
echo change >a.txt &&
|
|
git commit -a -m side &&
|
|
git tag side
|
|
'
|
|
|
|
test_expect_success 'git ls-files --deduplicate to show unique unmerged path' '
|
|
test_must_fail git merge tip &&
|
|
git ls-files --deduplicate >actual &&
|
|
cat >expect <<-\EOF &&
|
|
a.txt
|
|
b.txt
|
|
delete.txt
|
|
EOF
|
|
test_cmp expect actual &&
|
|
git merge --abort
|
|
'
|
|
|
|
test_expect_success 'git ls-files -d -m --deduplicate with different display options' '
|
|
git reset --hard side &&
|
|
test_must_fail git merge tip &&
|
|
rm delete.txt &&
|
|
git ls-files -d -m --deduplicate >actual &&
|
|
cat >expect <<-\EOF &&
|
|
a.txt
|
|
delete.txt
|
|
EOF
|
|
test_cmp expect actual &&
|
|
git ls-files -d -m -t --deduplicate >actual &&
|
|
cat >expect <<-\EOF &&
|
|
C a.txt
|
|
C a.txt
|
|
C a.txt
|
|
R delete.txt
|
|
C delete.txt
|
|
EOF
|
|
test_cmp expect actual &&
|
|
git ls-files -d -m -c --deduplicate >actual &&
|
|
cat >expect <<-\EOF &&
|
|
a.txt
|
|
b.txt
|
|
delete.txt
|
|
EOF
|
|
test_cmp expect actual &&
|
|
git merge --abort
|
|
'
|
|
|
|
test_done
|