Re: [PATCH 01/11] commit: simplify code
- From
Jeff King <peff@peff.net>
- Date
- May 15, 2025, 20:49 UTC
- Message-ID
- <20250515204957.GA3334771@coredump.intra.peff.net>
- In-Reply-To
- <xmqq4ixlzk43.fsf@gitster.g>
On Thu, May 15, 2025 at 01:37:00PM -0700, Junio C Hamano wrote:
Show 20 quoted lines
> Jeff King <peff@peff.net> writes:
>
> > ... there are any non-ita entries). Though in that case I'd think:
> >
> > committable = 0;
> > for (i = 0; i < cache_nr; i++) {
> > if (!ce_intent_to_add(...) {
> > committable = 1;
> > break;
> > }
> > }
> >
> > would be the most clear, since we do not otherwise care about the actual
> > number of ita entries. And lets us break out of the loop early.
>
> Exactly. If you focus on the warning too narrowly, the minimal
> change in the original patch does look OK, but in the original (even
> before Dscho's patch, that is) the intent is unclear, as opposed to
> what you showed above. And the update to squelch false positive
> does not improve the clarity of the logic as the above rewrite does.OK. If we do want to refactor, I think pulling it into a separate function is the most descriptive, like:
diff --git a/builtin/commit.c b/builtin/commit.c index 66bd91fd52..a8d43d223d 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -740,6 +740,15 @@ static void change_data_free(void *util, const char *str UNUSED) free(d); } +static int has_non_ita_entries(struct index_state *index) +{ + int i; + for (i = 0; i < index->cache_nr; i++) + if (!ce_intent_to_add(index->cache[i])) + return 1; + return 0; +} + static int prepare_to_commit(const char *index_file, const char *prefix, struct commit *current_head, struct wt_status *s, @@ -1015,14 +1024,10 @@ static int prepare_to_commit(const char *index_file, const char *prefix, parent = "HEAD^1"; if (repo_get_oid(the_repository, parent, &oid)) { - int i, ita_nr = 0; - /* TODO: audit for interaction with sparse-index. */ ensure_full_index(the_repository->index); - for (i = 0; i < the_repository->index->cache_nr; i++) - if (ce_intent_to_add(the_repository->index->cache[i])) - ita_nr++; - committable = the_repository->index->cache_nr - ita_nr > 0; + committable = + has_non_ita_entries(the_repository->index); } else { /* * Unless the user did explicitly request a submodule -Peff