From: Justin Tobler <jltobler@gmail.com>
To: K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
Cc: git@vger.kernel.org, a3205153416@gmail.com, gitster@pobox.com,
kumarayushjha123@gmail.com, lucasseikioshiro@gmail.com,
phillip.wood@dunelm.org.uk, sandals@crustytoothpaste.net
Subject: Re: [GSoC PATCH v2 3/4] repo: add path.gitdir with absolute and relative suffix formatting
Date: Tue, 9 Jun 2026 09:31:39 -0500 [thread overview]
Message-ID: <aighAZXRtLaz6sg8@denethor> (raw)
In-Reply-To: <CA+rGoLdpkuigWXqNSk3bS7-uhtzCizkPx2GGtNaTyy5J1SF7Rg@mail.gmail.com>
On 26/06/09 10:11AM, K Jayatheerth wrote:
> > > + struct strbuf sb = STRBUF_INIT;
> > > + enum path_format fmt = (arg_path_format != -1) ? arg_path_format : def_format;
> >
> > hmmm, so `arg_path_format` specifies what the user-provided format and
> > acts as a sentinel to signal there is no value provided and the fallback
> > format needs to be used. This feels a tad bit awkward to me.
> >
> > I wonder if we should introduce a PATH_FORMAT_DEFAULT to the
> > `path_format` enum that maps to one of the existing enum values in
> > `path.c:format_path()`. Here in `print_path()`, we could then intercept
> > a PATH_FORMAT_DEFAULT value and override it to the specified
> > `def_format`. I'm not sure if this is ultimately that much better
> > though.
>
> You're right that the -1 is awkward
> it forces arg_path_format to be an int rather than the enum type
> itself, which loses type safety.
>
> PATH_FORMAT_DEFAULT is cleaner in that regard, but it pushes the "what
> does default mean?" question into format_path()
> which currently has no notion of a fallback.
> Since the fallback is call-site specific (each path type in rev-parse
> has its own default),
> I'd rather keep that logic in print_path() where the context lives.
>
> A middle ground would be adding PATH_FORMAT_DEFAULT to the enum but
> not handling it in format_path().
>
> ---
> enum path_format_type format = PATH_FORMAT_DEFAULT;
>
> /* ... */
>
> static void print_path(const char *path, const char *prefix,
> enum path_format_type format,
> enum path_format_type def_format)
> {
> struct strbuf sb = STRBUF_INIT;
> enum path_format_type fmt =
> (format == PATH_FORMAT_DEFAULT) ? def_format : format;
>
> format_path(&sb, path, prefix, fmt);
> puts(sb.buf);
> strbuf_release(&sb);
> }
> ---
Intercepting PATH_FORMAT_DEFAULT in print_path() and overriding it to
the appropriate default needed for the specific path printed by
git-rev-parse(1), as shown above, seems reasonable to me.
But I do think that PATH_FORMAT_DEFAULT should have an actual default in
format_path(). Otherwise we would have an enum value that requires
callers to explicitly handle prior to invoking format_path() which would
also be rather awkward. IMO, it probably wouldn't be a big deal to just
say PATH_FORMAT_DEFAULT is treated as PATH_FORMAT_UNMODIFIED when passed
to format_path() and document it. In practice, our rev-parse use-case
would always replace PATH_FORMAT_DEFAULT with the appropriate value
prior to invoking format_path().
-Justin
next prev parent reply other threads:[~2026-06-09 14:31 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-01 15:19 [GSoC][PATCH 0/4] teach git repo info to handle path keys K Jayatheerth
2026-06-01 15:19 ` [GSoC][PATCH 1/4] path: add strbuf_add_path for formatting paths K Jayatheerth
2026-06-02 13:00 ` Phillip Wood
2026-06-01 15:19 ` [GSoC][PATCH 2/4] rev-parse: use strbuf_add_path for path formatting K Jayatheerth
2026-06-01 15:19 ` [GSoC][PATCH 3/4] repo: add path.gitdir with absolute and relative suffix formatting K Jayatheerth
2026-06-01 16:28 ` Lucas Seiki Oshiro
2026-06-01 23:09 ` Junio C Hamano
2026-06-01 15:19 ` [GSoC][PATCH 4/4] repo: add path.commondir " K Jayatheerth
2026-06-01 16:34 ` Lucas Seiki Oshiro
2026-06-01 21:58 ` Lucas Seiki Oshiro
2026-06-01 16:25 ` [GSoC][PATCH 0/4] teach git repo info to handle path keys Lucas Seiki Oshiro
2026-06-01 22:04 ` Lucas Seiki Oshiro
2026-06-01 23:05 ` Junio C Hamano
2026-06-02 13:03 ` Phillip Wood
2026-06-05 16:30 ` [GSoC PATCH v2 " K Jayatheerth
2026-06-05 16:30 ` [GSoC PATCH v2 1/4] path: introduce format_path() for centralized path formatting K Jayatheerth
2026-06-05 16:55 ` Kristoffer Haugsbakk
2026-06-09 2:27 ` K Jayatheerth
2026-06-08 15:05 ` Lucas Seiki Oshiro
2026-06-09 2:47 ` K Jayatheerth
2026-06-08 17:28 ` Justin Tobler
2026-06-05 16:30 ` [GSoC PATCH v2 2/4] rev-parse: use format_path for " K Jayatheerth
2026-06-08 17:54 ` Justin Tobler
2026-06-05 16:30 ` [GSoC PATCH v2 3/4] repo: add path.gitdir with absolute and relative suffix formatting K Jayatheerth
2026-06-08 18:50 ` Justin Tobler
2026-06-09 4:41 ` K Jayatheerth
2026-06-09 14:31 ` Justin Tobler [this message]
2026-06-10 12:11 ` K Jayatheerth
2026-06-08 22:17 ` Lucas Seiki Oshiro
2026-06-05 16:30 ` [GSoC PATCH v2 4/4] repo: add path.commondir " K Jayatheerth
2026-06-08 22:40 ` Lucas Seiki Oshiro
2026-06-05 17:35 ` [GSoC PATCH v2 0/4] teach git repo info to handle path keys Lucas Seiki Oshiro
2026-06-09 2:30 ` K Jayatheerth
2026-06-08 22:36 ` Junio C Hamano
2026-06-09 5:00 ` K Jayatheerth
2026-06-10 12:42 ` Lucas Seiki Oshiro
2026-06-12 18:28 ` [GSoC Patch v3 " K Jayatheerth
2026-06-12 18:28 ` [GSoC Patch v3 1/4] path: introduce append_formatted_path() for shared path formatting K Jayatheerth
2026-06-12 18:28 ` [GSoC Patch v3 2/4] rev-parse: use append_formatted_path() for " K Jayatheerth
2026-06-12 18:28 ` [GSoC Patch v3 3/4] repo: add path.commondir with absolute and relative suffix formatting K Jayatheerth
2026-06-15 1:54 ` Lucas Seiki Oshiro
2026-06-12 18:28 ` [GSoC Patch v3 4/4] repo: add path.gitdir " K Jayatheerth
2026-06-15 1:55 ` Lucas Seiki Oshiro
2026-06-15 1:59 ` [GSoC Patch v3 0/4] teach git repo info to handle path keys Lucas Seiki Oshiro
2026-06-15 4:51 ` [GSoC Patch v4 " K Jayatheerth
2026-06-15 4:51 ` [GSoC Patch v4 1/4] path: introduce append_formatted_path() for shared path formatting K Jayatheerth
2026-06-15 4:51 ` [GSoC Patch v4 2/4] rev-parse: use append_formatted_path() for " K Jayatheerth
2026-06-15 17:18 ` Justin Tobler
2026-06-16 4:19 ` K Jayatheerth
2026-06-15 4:51 ` [GSoC Patch v4 3/4] repo: add path.commondir with absolute and relative suffix formatting K Jayatheerth
2026-06-15 18:17 ` Justin Tobler
2026-06-15 4:51 ` [GSoC Patch v4 4/4] repo: add path.gitdir " K Jayatheerth
2026-06-16 4:49 ` [GSoC Patch v5 0/4] teach git repo info to handle path keys K Jayatheerth
2026-06-16 4:49 ` [GSoC Patch v5 1/4] path: introduce append_formatted_path() for shared path formatting K Jayatheerth
2026-06-16 4:49 ` [GSoC Patch v5 2/4] rev-parse: use append_formatted_path() for " K Jayatheerth
2026-06-16 4:49 ` [GSoC Patch v5 3/4] repo: add path.commondir with absolute and relative suffix formatting K Jayatheerth
2026-06-16 4:49 ` [GSoC Patch v5 4/4] repo: add path.gitdir " K Jayatheerth
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=aighAZXRtLaz6sg8@denethor \
--to=jltobler@gmail.com \
--cc=a3205153416@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jayatheerthkulkarni2005@gmail.com \
--cc=kumarayushjha123@gmail.com \
--cc=lucasseikioshiro@gmail.com \
--cc=phillip.wood@dunelm.org.uk \
--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.