| From 752250c75bc989d259fb2e6cb29ee5f034777d78 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 |
| |
| commit cc756edda63769cf6d7acc99e6ad3a9cbb5dc3ec upstream. |
| |
| 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> |
| 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 ea6bdd20e0..008fe03811 100644 |
| --- a/unpack-trees.c |
| +++ b/unpack-trees.c |
| @@ -1626,7 +1626,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 |
| |