From: "Hardik Kumar" <hardikxk@gmail.com>
To: "Junio C Hamano" <gitster@pobox.com>,
"Hardik Kumar" <hardikxk@gmail.com>
Cc: <git@vger.kernel.org>
Subject: Re: [PATCH] builtin: replace the_repository parameter in is_bare_repository()
Date: Fri, 28 Aug 2026 09:31:20 +0530 [thread overview]
Message-ID: <DL09ZWAJ69WQ.35RUJEJ5039GR@gmail.com> (raw)
In-Reply-To: <xmqq7blb8g04.fsf@gitster.g>
On Fri Aug 28, 2026 at 1:58 AM IST, Junio C Hamano wrote:
> "Hardik Kumar" <hardikxk@gmail.com> writes:
>
>>> In general, builtin/foo.c::cmd_foo() are concrete programs that work
>>> on specific repository (i.e., the_repository), and there is not much
>>> reason to rewrite the use of the_repository to use "repo" given by
>>> the caller which is git potty. You'd also need to deal with the
>>> case where "repo" is NULL (hint: "cd / && git foo -h").
>>
>> Right, but would safety check be required for single instance or better
>> to find and work on only the specific ones which could lead to an
>> exception.
>
> I do not quite get what you mean. In a single function you use
> the_repository and repo interchangeably, relying on repo, when it is
> not NULL), being the same as the_repository for correctness. If
> they ever refer to different things, then your updated code is less
> consistent than the original, which would not be an improvement.
>
> I actually think a good medium size project is to fix the last
> parameter given to cmd_foo() built-in command implementations that
> is a pointer to "struct repository". It was a misguided design.
>
> This pointer is either NULL or the_repository; it never takes any
> other value. It is misleading and invites confusion that these
> functions can take arbitrary repository instance. It also invites
> people to replace all references in cmd_foo() to "the_repository"
> with "repo", which may lead to an error. Depending on where
> parse_options() call appears in the cmd_foo(), "cd / && git foo -h"
> will cause segfaults with such a change.
>
> If we change the function signature of cmd_foo() to receive a "bool"
> that says "true" if the command was run inside a repository and
> "false" otherwise, cmd_foo() can still tell if the command was run
> outside a repository, and programmers will not be misled to use
> anything other than "the_repository" as the repository to work on.
>
> The utility functions builtin/foo.c borrows from outside builtin/
> directory are being "libified" to reduce the hardcoded dependence on
> the_repository, and cmd_foo() can call these functions with
> the_repository as a parameter. But we have no reason to waste our
> time updating (and also reviewing patches that make such updates)
> the built-in implementations themselves to take a pointer to an
> arbitrary repository.
Understood. Thanks for the clarification.
next prev parent reply other threads:[~2026-08-28 4:01 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-27 18:29 [PATCH] builtin: replace the_repository parameter in is_bare_repository() Hardik Kumar
2026-08-27 19:09 ` Junio C Hamano
2026-08-27 19:51 ` Junio C Hamano
2026-08-27 20:09 ` Hardik Kumar
2026-08-27 20:28 ` Junio C Hamano
2026-08-27 21:12 ` Ben Knoble
2026-08-27 21:39 ` Junio C Hamano
2026-08-28 11:41 ` D. Ben Knoble
2026-08-28 22:51 ` Junio C Hamano
2026-08-28 22:51 ` [PATCH 0/8] More sensible checkout/switch/restore code refactoring Junio C Hamano
2026-08-28 22:51 ` [PATCH 1/8] checkout: pass cb_option explicitly to branch name parsers Junio C Hamano
2026-08-28 22:52 ` [PATCH 2/8] checkout: validate new branch name in checkout_branch() Junio C Hamano
2026-08-28 22:52 ` [PATCH 3/8] checkout: validate stage and merge option compatibility in checkout_paths() Junio C Hamano
2026-08-28 22:52 ` [PATCH 4/8] checkout: extract option validation and pathspec helpers Junio C Hamano
2026-08-28 22:52 ` [PATCH 5/8] checkout: extract branch setup and tracking helpers Junio C Hamano
2026-08-28 22:52 ` [PATCH 6/8] checkout: restructure switch, restore, and checkout entrypoints Junio C Hamano
2026-08-28 22:52 ` [PATCH 7/8] checkout: wrap overly long lines Junio C Hamano
2026-08-28 22:55 ` Junio C Hamano
2026-08-29 2:06 ` Junio C Hamano
2026-08-28 22:52 ` [PATCH 8/8] checkout: move post_checkout_hook() to checkout.c Junio C Hamano
2026-08-28 22:57 ` Junio C Hamano
2026-08-29 2:05 ` Junio C Hamano
2026-08-29 13:24 ` [PATCH] builtin: replace the_repository parameter in is_bare_repository() D. Ben Knoble
2026-08-27 21:35 ` [PATCH] do not pass "repo" to builtin commmand implementations Junio C Hamano
2026-08-28 9:05 ` Hardik Kumar
2026-08-28 20:59 ` Junio C Hamano
2026-08-28 4:01 ` Hardik Kumar [this message]
2026-08-27 19:56 ` [PATCH] builtin: replace the_repository parameter in is_bare_repository() Hardik Kumar
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=DL09ZWAJ69WQ.35RUJEJ5039GR@gmail.com \
--to=hardikxk@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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.