From: Johannes Schindelin Date: Mon, 9 Sep 2019 11:56:15 +0000 (+0200) Subject: unpack-trees: let merged_entry() pass through do_add_entry()'s errors X-Git-Tag: v2.24.1~1^2~1^2~1^2~3^2~3^2~1^2~1^2~2^2~2^2~2^2~2^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cc756edda63769cf6d7acc99e6ad3a9cbb5dc3ec;p=thirdparty%2Fgit.git 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 --- diff --git a/unpack-trees.c b/unpack-trees.c index 862cfce661..649d11855e 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1821,7 +1821,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; }