]> git.ipfire.org Git - thirdparty/git.git/commitdiff
unpack-trees: avoid nuking untracked dir in way of locally deleted file
authorElijah Newren <newren@gmail.com>
Mon, 27 Sep 2021 16:33:46 +0000 (16:33 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Sep 2021 20:38:37 +0000 (13:38 -0700)
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t2500-untracked-overwriting.sh
unpack-trees.c

index 5ec66058cfc20d43796f212261ec0227dc80f301..5c0bf4d21fcbb2a55e2c41c184ccb4c188c88ca4 100755 (executable)
@@ -218,7 +218,7 @@ test_expect_success 'git am --abort and untracked dir vs. unmerged file' '
        )
 '
 
-test_expect_failure 'git am --skip and untracked dir vs deleted file' '
+test_expect_success 'git am --skip and untracked dir vs deleted file' '
        test_setup_sequencing am_skip_and_untracked &&
        (
                cd sequencing_am_skip_and_untracked &&
index 821f532c8515087a7602028796d3c22d397fb73b..48ca93a7250807133ece63cb839f4ac97b55cfe4 100644 (file)
@@ -2409,7 +2409,10 @@ static int deleted_entry(const struct cache_entry *ce,
                if (verify_absent(ce, ERROR_WOULD_LOSE_UNTRACKED_REMOVED, o))
                        return -1;
                return 0;
+       } else if (verify_absent_if_directory(ce, ERROR_WOULD_LOSE_UNTRACKED_REMOVED, o)) {
+               return -1;
        }
+
        if (!(old->ce_flags & CE_CONFLICTED) && verify_uptodate(old, o))
                return -1;
        add_entry(o, ce, CE_REMOVE, 0);