Bug report: git status does not report unmerged entries with copies
From: Mark Lodato <hidden>
Date: 2016-06-15 22:50:59
Commit 4d4d572, "status: show worktree status of conflicted paths
separately" introduced the following bug: If one tries to merge two
branches with a conflict, where the conflicting file was also copied
in one of the branches, "git status" (but not "git status -sb" or
git-gui) fails to report the unmerged status. You can use the below
test file to see the error. A similar test should probably be
integrated into one of the existing git-status test files, though you
may need to get rid of the "sed -i" command.
$ git status
# On branch master
# Changes to be committed:
#
# renamed: file -> copy
#
$ git status -sb
## master
R file -> copy
U file
In the above, "git status" should have reported "file" being in an
unmerged state. It probably should also mark "copy" as a copy, not a
rename.
-------- 8< --------
#!/bin/sh
#
# Copyright (c) 2011 Mark Lodato
#
test_description='git status on merge with copy'
. ./test-lib.sh
test_expect_success 'setup' '
echo first > file &&
echo second >> file &&
echo third >> file &&
echo fourth >> file &&
git add file &&
git commit -m initial &&
git checkout -b branch &&
cp file copy &&
git add copy &&
git commit -m copy &&
sed -i -e "s/second/fifth/" file &&
git add file &&
git commit -m fifth &&
git checkout master &&
sed -i -e "s/second/sixth/" file &&
git add file &&
git commit -m sixth
'
test_expect_success 'merge' '
! git merge branch
'
test_expect_success 'status' '
git status | grep unmerged
'
test_done