All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "brian m. carlson" <sandals@crustytoothpaste.net>
Cc: <git@vger.kernel.org>
Subject: Re: [RFC PATCH 4/6] hex: label usages of hex parsing for object IDs
Date: Tue, 25 Aug 2026 09:11:42 -0700	[thread overview]
Message-ID: <xmqqh5kinps1.fsf@gitster.g> (raw)
In-Reply-To: <20260729233215.398654-5-sandals@crustytoothpaste.net> (brian m. carlson's message of "Wed, 29 Jul 2026 23:32:13 +0000")

"brian m. carlson" <sandals@crustytoothpaste.net> writes:

> In preparation for a future change, label the hex parsing we're doing
> for object IDs by defining a constant called HEX_KIND_OID.  This is
> currently the same as HEX_KIND_MIXED, so there is no functional change
> here.
>
> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  diagnose.c    | 2 +-
>  hex-ll.h      | 2 ++
>  hex.c         | 2 +-
>  http-push.c   | 4 ++--
>  notes.c       | 2 +-
>  object-file.c | 2 +-
>  6 files changed, 8 insertions(+), 6 deletions(-)

This is a hard-to-review patch in the sense that what we see in the
patch may be perfectly good, but we cannot see what is left out,
either by mistake or by misdesign.  So I checked out the state with
this patch (and no later ones) applied, and eyeballed the output of

    $ git grep -n -e HEX_KIND_MIXED

At this step, a few explicit uses of HEX_KIND_MIXED remain that I
think should have been converted to HEX_KIND_OID.

 * builtin/index-pack.c:repack_local_links() spawns a pack-objects
   process and reads its output.  As we are reading from a known
   version of Git (i.e., pack-objects that came with the index-pack
   that runs this code), we do not need to be lenient and can use
   HEX_KIND_OID here.

 * notes.c:load_subtree() has two calls to hex_to_bytes() to read
   paths in a notes tree, and this patch updates only one to use
   HEX_KIND_OID, leaving the other one HEX_KIND_MIXED, which we
   probably should change at the same time (if there is a valid
   reason, it deserves an in-code comment to explain it).


The remaining uses of HEX_KIND_MIXED look mostly OK.

 - color.c uses MIXED to decode things like #AAFF00, which will be
   correct forever.

 - mailinfo.c uses MIXED to decode Q encoding, and we have no power
   or business to forbid uppercase hex there.

 - pkt-line.c:packet_length() uses MIXED to decode the packet length
   expressed in the four hex digits at the beginning.  We could
   forbid uppercase hex there (our length bytes have always been
   lowercase) if we wanted to, but HEX_KIND_OID is not the enum to
   use to do so.

 - ref-filter.c:append_literal() is similar to the next one.

 - strbuf.c:strbuf_expand_literal() uses MIXED to decode %0A into line
   feed, etc.  We could forbid uppercase hex there if we wanted to,
   but HEX_KIND_OID is not the enum to use to do so.

 - url.c:url_decode_internal() uses MIXED to decode %2F into '/',
   etc., and we have no power or business to forbid uppercase hex
   there.

 - urlmatch.c:append_normalized_escapes() uses MIXED to decode %2F
   into '/' before escaping it back with %02X.

  parent reply	other threads:[~2026-08-25 16:11 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29 23:32 [RFC PATCH 0/6] Git 3.0: restrict hex object IDs to lowercase only brian m. carlson
2026-07-29 23:32 ` [RFC PATCH 1/6] hex: add functionality for lowercase-only hex brian m. carlson
2026-07-31  7:38   ` Junio C Hamano
2026-08-25 15:39   ` Junio C Hamano
2026-08-25 21:44     ` brian m. carlson
2026-07-29 23:32 ` [RFC PATCH 2/6] hex: allow specifying hex type with hex2chr brian m. carlson
2026-07-29 23:32 ` [RFC PATCH 3/6] hex: make hex_to_bytes accept kind of hex to use brian m. carlson
2026-07-31  7:38   ` Junio C Hamano
2026-08-01 14:35     ` Jeff King
2026-07-29 23:32 ` [RFC PATCH 4/6] hex: label usages of hex parsing for object IDs brian m. carlson
2026-07-31  3:24   ` Junio C Hamano
2026-08-25 16:11   ` Junio C Hamano [this message]
2026-07-29 23:32 ` [RFC PATCH 5/6] object-name: use hexval brian m. carlson
2026-08-25 16:19   ` Junio C Hamano
2026-08-25 19:44   ` Elijah Newren
2026-08-25 21:41     ` brian m. carlson
2026-07-29 23:32 ` [RFC PATCH 6/6] hex: allow only lowercase object IDs in breaking changes mode brian m. carlson
2026-07-31  7:48   ` Junio C Hamano
2026-07-31 12:33     ` Junio C Hamano
2026-08-02 22:09     ` brian m. carlson
2026-08-04 19:32       ` Junio C Hamano
2026-08-04 21:46         ` brian m. carlson
2026-08-05  3:09       ` Michael Montalbo
2026-08-25  9:04   ` Phillip Wood
2026-08-25 21:36     ` brian m. carlson
2026-08-25 16:36   ` Junio C Hamano
2026-08-25 19:44   ` Elijah Newren
2026-07-30  8:21 ` [RFC PATCH 0/6] Git 3.0: restrict hex object IDs to lowercase only Junio C Hamano
2026-07-30 21:18   ` brian m. carlson
2026-08-01 14:45     ` Jeff King
2026-08-01 18:22       ` Junio C Hamano
2026-08-02 21:55       ` brian m. carlson

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=xmqqh5kinps1.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=sandals@crustytoothpaste.net \
    /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.