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>
This commit is contained in:
Johannes Schindelin 2019-09-09 13:56:15 +02:00
parent 35edce2056
commit cc756edda6

View File

@ -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;
}