All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: [PATCH 3/8] checkout: validate stage and merge option compatibility in checkout_paths()
Date: Fri, 28 Aug 2026 15:52:01 -0700	[thread overview]
Message-ID: <20260828225206.310500-4-gitster@pobox.com> (raw)
In-Reply-To: <20260828225206.310500-1-gitster@pobox.com>

In checkout_main(), checking that no more than one of --ours/--theirs,
--force, and --merge is specified is performed when pathspecs are
present, before dispatching to checkout_paths().  Checking out a
branch does not use index stages, so this validation belongs in
checkout_paths().

Move the incompatibility check from checkout_main() into
checkout_paths().

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin/checkout.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/builtin/checkout.c b/builtin/checkout.c
index 14542626e9..e3d23256e2 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -591,6 +591,10 @@ static int checkout_paths(const struct checkout_opts *opts,
 		die(_("'%s', '%s', or '%s' cannot be used when checking out of a tree"),
 		    "--merge", "--ours", "--theirs");
 
+	if (1 < !!opts->writeout_stage + !!opts->force + !!opts->merge)
+		die(_("git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
+		      "checking out of the index."));
+
 	if (opts->patch_mode) {
 		enum add_p_mode patch_mode;
 		struct interactive_options interactive_opts = {
@@ -2063,11 +2067,7 @@ static int checkout_main(int argc, const char **argv, const char *prefix,
 
 	opts->pathspec.recursive = 1;
 
-	if (opts->pathspec.nr) {
-		if (1 < !!opts->writeout_stage + !!opts->force + !!opts->merge)
-			die(_("git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
-			      "checking out of the index."));
-	} else {
+	if (!opts->pathspec.nr) {
 		if (opts->accept_pathspec && !opts->empty_pathspec_ok &&
 		    !opts->patch_mode)	/* patch mode is special */
 			die(_("you must specify path(s) to restore"));
-- 
2.55.0-884-g76cf8659c2


  parent reply	other threads:[~2026-08-28 22:52 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                   ` Junio C Hamano [this message]
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         ` [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=20260828225206.310500-4-gitster@pobox.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    /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.