[PATCH v2 4/7] merge-ort: clearer propagation of failure-to-function from merge_submodule
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jun 19, 2024, 03:00 UTC
- Message-ID
- <2813a15b48b70ead7e3fd062d1b49baee665fc9d.1718766019.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1748.v2.git.1718766019.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>
The 'clean' member variable is somewhat of a tri-state (1 = clean, 0 = conflicted, -1 = failure-to-determine), but we often like to think of it as binary (ignoring the possibility of a negative value) and use constructs like '!clean' to reflect this. However, these constructs can make codepaths more difficult to understand, unless we handle the negative case early and return pre-emptively; do that in handle_content_merge() to make the code a bit easier to read.
Signed-off-by: Elijah Newren <newren@gmail.com> --- merge-ort.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/merge-ort.c b/merge-ort.c index be0f5bc3838..d187c966c6a 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -2193,6 +2193,8 @@ static int handle_content_merge(struct merge_options *opt, clean = merge_submodule(opt, pathnames[0], two_way ? null_oid() : &o->oid, &a->oid, &b->oid, &result->oid); + if (clean < 0) + return -1; if (opt->priv->call_depth && two_way && !clean) { result->mode = o->mode; oidcpy(&result->oid, &o->oid);
-- gitgitgadget