diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2019-04-25 16:45:51 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-05-07 13:04:47 +0900 |
commit | e3ddd3b5e583e62d874f56f8c88603ad0ebafd5e (patch) | |
tree | bc9cfc25295e585703341f8237e3d48727e19862 /builtin/checkout.c | |
parent | restore: add --worktree and --staged (diff) | |
download | tgif-e3ddd3b5e583e62d874f56f8c88603ad0ebafd5e.tar.xz |
restore: reject invalid combinations with --staged
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/checkout.c')
-rw-r--r-- | builtin/checkout.c | 10 |
1 files changed, 10 insertions, 0 deletions
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; |