From: Taylor Blau <me@ttaylorr.com>
To: Jeff King <peff@peff.net>
Cc: "SZEDER Gábor" <szeder.dev@gmail.com>,
"Taylor Blau" <me@ttaylorr.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Derrick Stolee" <dstolee@microsoft.com>,
git@vger.kernel.org
Subject: Re: [PATCH 3/3] commit-graph: error out on invalid commit oids in 'write --stdin-commits'
Date: Mon, 13 Apr 2020 13:39:34 -0600 [thread overview]
Message-ID: <20200413193934.GC63249@syl.local> (raw)
In-Reply-To: <20200403231021.GA672258@coredump.intra.peff.net>
On Fri, Apr 03, 2020 at 07:10:21PM -0400, Jeff King wrote:
> On Fri, Apr 03, 2020 at 10:40:13PM +0200, SZEDER Gábor wrote:
>
> > > Do you care about complaining about:
> > >
> > > git rev-parse HEAD^{tree} | git commit-graph write --stdin-commits
> > >
> > > ? That's the case that's much more interesting, I think.
> >
> > Hm, are you trying to go in the direction where '--stdin-commits'
> > would keep erroring out on any non-full-hex-oid, but would accept and
> > silently ignore any hex oids that are not commits (perhaps even when
> > there is no such object, dunno)? I think that would support the use
> > cases you mentioned, while it would still save me when I do the 'echo
> > <ref>' thing (somehow I regularly do that, remember doing it the day
> > before yesterday!).
>
> Yes, exactly. The case you care about and the case I care about are
> different ones, so there's no inherent conflict between them.
I was looking back again at this today, and I think we need something
more or less like the following on top. I'll send it out later today or
early tomorrow...
diff --git a/commit-graph.c b/commit-graph.c
index 2d436907cd..58e7890590 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -1221,17 +1221,24 @@ static int fill_oids_from_commit_hex(struct write_commit_graph_context *ctx,
commit_hex->nr);
}
for (i = 0; i < commit_hex->nr; i++) {
+ int ret;
const char *end;
struct object_id oid;
struct commit *result;
display_progress(ctx->progress, i + 1);
- if (!parse_oid_hex(commit_hex->items[i].string, &oid, &end) &&
- (result = lookup_commit_reference_gently(ctx->r, &oid, 1))) {
+
+ ret = parse_oid_hex(commit_hex->items[i].string, &oid, &end);
+ if (!ret) {
+ result = lookup_commit_reference_gently(ctx->r, &oid, 1);
+ if (result) {
ALLOC_GROW(ctx->oids.list, ctx->oids.nr + 1, ctx->oids.alloc);
oidcpy(&ctx->oids.list[ctx->oids.nr], &(result->object.oid));
ctx->oids.nr++;
- } else if (ctx->check_oids) {
+ }
+ }
+
+ if (ret || (ctx->check_oids && !result)) {
error(_("invalid commit object id: %s"),
commit_hex->items[i].string);
return -1;
> -Peff
Thanks,
Taylor
next prev parent reply other threads:[~2020-04-13 19:39 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-05 8:02 [PATCH 0/3] commit-graph: error out on invalid commit oids in 'write --stdin-commits' SZEDER Gábor
2019-08-05 8:02 ` [PATCH 1/3] t5318-commit-graph: use 'test_expect_code' SZEDER Gábor
2019-08-05 8:02 ` [PATCH 2/3] commit-graph: turn a group of write-related macro flags into an enum SZEDER Gábor
2019-08-05 8:02 ` [PATCH 3/3] commit-graph: error out on invalid commit oids in 'write --stdin-commits' SZEDER Gábor
2019-08-05 13:57 ` Derrick Stolee
2019-08-05 17:57 ` SZEDER Gábor
2020-04-03 18:30 ` Jeff King
2020-04-03 18:49 ` Taylor Blau
2020-04-03 19:38 ` SZEDER Gábor
2020-04-03 19:51 ` Jeff King
2020-04-03 20:40 ` SZEDER Gábor
2020-04-03 23:10 ` Jeff King
2020-04-13 19:39 ` Taylor Blau [this message]
2020-04-13 21:25 ` Jeff King
2020-04-14 2:04 ` Taylor Blau
2020-04-03 19:55 ` Taylor Blau
2020-04-03 19:47 ` Junio C Hamano
2020-04-03 19:57 ` Taylor Blau
2019-08-05 10:14 ` [PATCH 0/3] " SZEDER Gábor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200413193934.GC63249@syl.local \
--to=me@ttaylorr.com \
--cc=dstolee@microsoft.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=szeder.dev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.