[PATCH v3 07/16] restore: reject invalid combinations with --staged
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Apr 25, 2019, 09:45 UTC
- Message-ID
- <20190425094600.15673-8-pclouds@gmail.com>
- In-Reply-To
- <20190425094600.15673-1-pclouds@gmail.com>
git-checkout rejects plenty of invalid option combinations. Since git-checkout is equivalent of either
git restore --source --staged --worktree
or
git restore --worktree
that still leaves the new mode 'git restore --index' unprotected. Reject some more invalid option combinations.
The other new mode 'restore --source --worktree' does not need anything else.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- builtin/checkout.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/builtin/checkout.c b/builtin/checkout.c index e855c64cfe..71e2589340 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -433,6 +433,16 @@ static int checkout_paths(const struct checkout_opts *opts, 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"); + if (opts->patch_mode) { const char *patch_mode;
-- 2.21.0.854.ge34a79f761