blob: 0296fcad02b869c7c549e18217639bb2a42eab91 [file] [log] [blame]
From 64e76745d7a6c453c9d868d2ff6c2e731d33fda7 Mon Sep 17 00:00:00 2001
From: Johannes Schindelin <johannes.schindelin@gmx.de>
Date: Mon, 9 Sep 2019 13:56:15 +0200
Subject: unpack-trees: let merged_entry() pass through do_add_entry()'s errors
A `git clone` will end with exit code 0 when `merged_entry()` returns a
positive value during a call of `unpack_trees()` to `traverse_trees()`.
The reason is that `unpack_trees()` will interpret a positive value not
to be an error.
The problem is, however, that `add_index_entry()` (which is called by
`merged_entry()` can report an error, and we really should fail the
entire clone in such a case.
Let's fix this problem, in preparation for a Windows-specific patch
disallowing `mkdir()` with directory names that contain a trailing space
(which is illegal on NTFS): we want `git clone` to abort when a path
cannot be checked out due to that condition.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
(cherry picked from commit cc756edda63769cf6d7acc99e6ad3a9cbb5dc3ec)
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
unpack-trees.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/unpack-trees.c b/unpack-trees.c
index 7570df481b..545d5668fd 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -2073,7 +2073,8 @@ static int merged_entry(const struct cache_entry *ce,
invalidate_ce_path(old, o);
}
- do_add_entry(o, merge, update, CE_STAGEMASK);
+ if (do_add_entry(o, merge, update, CE_STAGEMASK) < 0)
+ return -1;
return 1;
}
--
2.24.0.393.g34dc348eaf