diff options
author | Jonathan Tan <jonathantanmy@google.com> | 2019-09-18 13:27:38 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-09-20 10:15:57 -0700 |
commit | 83e3ad3b126125d23eea10283d85682a1a680daa (patch) | |
tree | 633d455b9afead846c749e5f93ed20be471771ed /t/t4047-diff-dirstat.sh | |
parent | Git 2.23 (diff) | |
download | tgif-83e3ad3b126125d23eea10283d85682a1a680daa.tar.xz |
merge-recursive: symlink's descendants not in way
When the working tree has:
- bar (directory)
- bar/file (file)
- foo (symlink to .)
(note that lstat() for "foo/bar" would tell us that it is a directory)
and the user merges a commit that deletes the foo symlink and instead
contains:
- bar (directory, as above)
- bar/file (file, as above)
- foo (directory)
- foo/bar (file)
the merge should happen without requiring user intervention. However,
this does not happen.
This is because dir_in_way(), when checking the working tree, thinks
that "foo/bar" is a directory. But a symlink should be treated much the
same as a file: since dir_in_way() is only checking to see if there is a
directory in the way, we don't want symlinks in leading paths to
sometimes cause dir_in_way() to return true.
Teach dir_in_way() to also check for symlinks in leading paths before
reporting whether a directory is in the way.
Helped-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t4047-diff-dirstat.sh')
0 files changed, 0 insertions, 0 deletions