Browse Source
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>maint
ZheNing Hu
4 years ago
committed by
Junio C Hamano
3 changed files with 102 additions and 3 deletions
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
#!/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 |
Loading…
Reference in new issue