From: Junio C Hamano <gitster@pobox.com>
To: Karthik Nayak <karthik.188@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v2 6/8] checkout: restructure switch, restore, and checkout entrypoints
Date: Tue, 01 Sep 2026 16:25:48 -0700 [thread overview]
Message-ID: <xmqqik4olfk3.fsf@gitster.g> (raw)
In-Reply-To: <CAOLa=ZTHGAfRZJKjrB=u-AxiUWgL2p_5HijdfJmCN_wJCE8BqA@mail.gmail.com> (Karthik Nayak's message of "Tue, 1 Sep 2026 07:14:42 -0700")
Karthik Nayak <karthik.188@gmail.com> writes:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> cmd_switch(), cmd_restore(), and cmd_checkout() pass their options
>> to checkout_main(), which parses options and configuration,
>> validates and dispatches to checkout_branch() or checkout_paths().
>>
>> Now that option initialization, validation, and branch setup have been
>> split into dedicated helper functions, restructure cmd_switch(),
>> cmd_restore(), and cmd_checkout() to invoke these helpers directly and
>> dispatch to checkout_branch() or checkout_paths().
>>
>> In cmd_restore(), handle the --staged default from_treeish = "HEAD" and
>> resolve opts.from_treeish into new_branch_info and opts.source_tree.
>>
>> This allows us to remove checkout_main() and enum checkout_command
>> as they are no longer needed.
>>
>> Signed-off-by: Junio C Hamano <gitster@pobox.com>
>> ---
>> builtin/checkout.c | 297 +++++++++++++++++++++++----------------------
>> 1 file changed, 149 insertions(+), 148 deletions(-)
>>
>> diff --git a/builtin/checkout.c b/builtin/checkout.c
>> index 2edaca5539..b18515ac7f 100644
>> --- a/builtin/checkout.c
>> +++ b/builtin/checkout.c
>> @@ -1341,12 +1341,6 @@ static void setup_new_branch_info_and_source_tree(
>> }
>>
>>
>> -enum checkout_command {
>> - CHECKOUT_CHECKOUT = 1,
>> - CHECKOUT_SWITCH = 2,
>> - CHECKOUT_RESTORE = 3,
>> -};
>> -
>
> Okay so this is how the first commit fits in. Now it makes sense.
Yes. The point of the series was to get rid of the monolithic
checkout_main() that everybody goes through. And the enum is
primarily for that monolith to decide which code path the original
request is about.
In the step that gets rid of the monolith, the enum no longer
becomes needed, even though an error message with advice to tell
which options are mutually incompatible may need to know the exact
name of the option. That makes [1/8] more reasonable than passing
enums around.
next prev parent reply other threads:[~2026-09-01 23:25 UTC|newest]
Thread overview: 47+ 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-30 20:48 ` [PATCH v2 0/8] More sensible checkout/switch/restore code refactoring Junio C Hamano
2026-08-30 20:48 ` [PATCH v2 1/8] checkout: pass cb_option explicitly to branch name parsers Junio C Hamano
2026-09-01 11:31 ` Karthik Nayak
2026-08-30 20:48 ` [PATCH v2 2/8] checkout: validate new branch name in checkout_branch() Junio C Hamano
2026-09-01 11:36 ` Karthik Nayak
2026-08-30 20:48 ` [PATCH v2 3/8] checkout: validate stage and merge option compatibility in checkout_paths() Junio C Hamano
2026-09-01 11:53 ` Karthik Nayak
2026-09-01 17:47 ` Junio C Hamano
2026-09-02 11:20 ` Karthik Nayak
2026-09-02 22:40 ` Junio C Hamano
2026-09-03 9:21 ` Karthik Nayak
2026-08-30 20:48 ` [PATCH v2 4/8] checkout: extract option validation and pathspec helpers Junio C Hamano
2026-08-30 20:48 ` [PATCH v2 5/8] checkout: extract branch setup and tracking helpers Junio C Hamano
2026-08-30 20:48 ` [PATCH v2 6/8] checkout: restructure switch, restore, and checkout entrypoints Junio C Hamano
2026-09-01 14:14 ` Karthik Nayak
2026-09-01 23:25 ` Junio C Hamano [this message]
2026-09-02 11:02 ` Karthik Nayak
2026-08-30 20:48 ` [PATCH v2 7/8] checkout: wrap overly long lines Junio C Hamano
2026-08-30 20:48 ` [PATCH v2 8/8] checkout: move post_checkout_hook() to checkout.c 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 ` [PATCH] builtin: replace the_repository parameter in is_bare_repository() Hardik Kumar
2026-08-27 19:56 ` 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=xmqqik4olfk3.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=karthik.188@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox