From: Junio C Hamano Date: Sun, 19 Mar 2023 22:03:10 +0000 (-0700) Subject: Merge branch 'ak/restore-both-incompatible-with-conflicts' X-Git-Tag: v2.41.0-rc0~155 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=67076b85b8f82c751fe634abb112139d6e32a5f1;p=thirdparty%2Fgit.git Merge branch 'ak/restore-both-incompatible-with-conflicts' "git restore" supports options like "--ours" that are only meaningful during a conflicted merge, but these options are only meaningful when updating the working tree files. These options are marked to be incompatible when both "--staged" and "--worktree" are in effect. * ak/restore-both-incompatible-with-conflicts: restore: fault --staged --worktree with merge opts --- 67076b85b8f82c751fe634abb112139d6e32a5f1 diff --cc builtin/checkout.c index 21a4335abb,25d269e2f8..2b3ae6032d --- a/builtin/checkout.c +++ b/builtin/checkout.c @@@ -490,18 -487,31 +490,31 @@@ static int checkout_paths(const struct die(_("'%s' must be used when '%s' is not specified"), "--worktree", "--source"); - if (opts->checkout_index && !opts->checkout_worktree && - opts->writeout_stage) - die(_("'%s' or '%s' cannot be used with %s"), - "--ours", "--theirs", "--staged"); - - if (opts->checkout_index && !opts->checkout_worktree && - opts->merge) - die(_("'%s' or '%s' cannot be used with %s"), - "--merge", "--conflict", "--staged"); + /* + * Reject --staged option to the restore command when combined with + * merge-related options. Use the accept_ref flag to distinguish it + * from the checkout command, which does not accept --staged anyway. + * + * `restore --ours|--theirs --worktree --staged` could mean resolving + * conflicted paths to one side in both the worktree and the index, + * but does not currently. + * + * `restore --merge|--conflict=