]> git.ipfire.org Git - thirdparty/git.git/commitdiff
unpack-trees: let merged_entry() pass through do_add_entry()'s errors
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Mon, 9 Sep 2019 11:56:15 +0000 (13:56 +0200)
committerJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 5 Dec 2019 14:37:06 +0000 (15:37 +0100)
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>
unpack-trees.c

index 862cfce661e57e50f7c6030dd5a8eda0add0cca5..649d11855e0cbc292ee7548992815681c12d203d 100644 (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;
 }