fsck: detect more in-tree d/f conflicts
If the conflict candidate file name from the top of the stack is not a prefix of the current candiate directory then we can discard it as no matching directory can come up later. But we are not done checking the candidate directory -- the stack might still hold a matching file name, so stay in the loop and check the next candidate file name. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe committed
May 21, 2020 at 11:52 UTC
fe747043dc96fd5c151496f0e45dbf80de07793d
2 files changed
+2
-2
fsck.c
+1
-1
@@ -620,7 +620,7 @@ static int verify_ordered(unsigned mode1, const char *name1,
620
if (!f_name)
621
break;
622
if (!skip_prefix(name2, f_name, &p))
623
- break;
623
+ continue;
624
if (!*p)
625
return TREE_HAS_DUPS;
626
if (is_less_than_slash(*p)) {
t/t1450-fsck.sh
+1
-1
@@ -261,7 +261,7 @@ check_duplicate_names () {
261
262
check_duplicate_names success x x.1 x/
263
check_duplicate_names success x x.1.2 x.1/ x/
264
-check_duplicate_names failure x x.1 x.1.2 x/
264
+check_duplicate_names success x x.1 x.1.2 x/
265
266
test_expect_success 'unparseable tree object' '
267
test_oid_cache <<-\EOF &&