public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Jeff King <peff@peff•net>
To: Junio C Hamano <gitster@pobox•com>
Cc: Michael J Gruber <git@grubix•eu>, git@vger•kernel.org
Subject: Re: [PATCH 1/4] revision: make handle_dotdot() interface less confusing
Date: Thu, 26 Mar 2026 19:14:15 -0400	[thread overview]
Message-ID: <20260326231415.GA420281@coredump.intra.peff.net> (raw)
In-Reply-To: <xmqqikaipf00.fsf@gitster.g>

On Thu, Mar 26, 2026 at 12:28:15PM -0700, Junio C Hamano wrote:

> > There are two very subtle bits to the way we parse ".." (and "...")
> > range operators:
> >
> >  1. In handle_dotdot_1(), we assume that the incoming arguments "dotdot"
> >     and "arg" are part of the same string, with the first digit of the
> 
> "digit" -> "dot".

Oops, yeah.

> OK.  I was hoping if we can do without a temporary allocation, but
> the const-string "..HEAD" example does make it clear that it is not
> something we can achieve easily.
> 
> And once we accept that it is inevitable to make a copy, everything
> else falls into the right place.

Yeah, I don't think there is another good option. We can drop the
"const" from the interface, which would be more honest, but then callers
that use string literals have to either make their own copy, or cast
away the constness and pray.

The only "right" solution that avoids copying is if all of the
lower-level functions learned to work with ptr/len pairs instead of
NUL-terminated strings. But having done that sort of conversion before,
it ends up quite messy and is prone to errors. Somebody is welcome to
try tackling that if they want, but I don't. :)

-Peff

  reply	other threads:[~2026-03-26 23:14 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-26 15:22 [PATCH 0/6] ISOC23: quell warnings on discarding const Michael J Gruber
2026-03-26 15:22 ` [PATCH 1/6] do not discard const: the simple cases Michael J Gruber
2026-03-26 17:34   ` Jeff King
2026-03-26 17:45     ` Junio C Hamano
2026-03-26 19:23       ` [PATCH] config: store allocated string in non-const pointer Jeff King
2026-03-26 15:22 ` [PATCH 2/6] do not discard const: make git-compat-util ISOC23-like Michael J Gruber
2026-03-26 15:22 ` [PATCH 3/6] do not discard const: adjust to non-const data types Michael J Gruber
2026-03-26 17:28   ` Junio C Hamano
2026-03-26 15:22 ` [PATCH 4/6] do not discard const: declare const where we stay const Michael J Gruber
2026-03-26 15:22 ` [PATCH 5/6] do not discard const: keep signature Michael J Gruber
2026-03-26 17:18   ` Junio C Hamano
2026-03-26 15:22 ` [PATCH 6/6] do not discard const: the ugly truth Michael J Gruber
2026-03-26 17:07   ` Junio C Hamano
2026-03-26 17:42   ` Jeff King
2026-03-26 19:02     ` [PATCH 0/4] fix const issues in revision parser Jeff King
2026-03-26 19:04       ` [PATCH 1/4] revision: make handle_dotdot() interface less confusing Jeff King
2026-03-26 19:28         ` Junio C Hamano
2026-03-26 23:14           ` Jeff King [this message]
2026-03-27 15:55             ` Junio C Hamano
2026-03-26 19:05       ` [PATCH 2/4] rev-parse: simplify dotdot parsing Jeff King
2026-03-26 19:13       ` [PATCH 3/4] revision: avoid writing to const string for parent marks Jeff King
2026-03-26 19:14       ` [PATCH 4/4] rev-parse: " Jeff King
2026-03-26 16:26 ` [PATCH 0/6] ISOC23: quell warnings on discarding const D. Ben Knoble
2026-03-27 17:45   ` Michael J Gruber

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=20260326231415.GA420281@coredump.intra.peff.net \
    --to=peff@peff$(echo .)net \
    --cc=git@grubix$(echo .)eu \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox