The shortcut of these options do not make much sense when used with
switch-branch. And their descriptions are also tied to checkout
out. Move -b/-B to cmd_checkout() and new -c/-C with the same
functionality in cmd_switch_branch()

Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 builtin/checkout.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/builtin/checkout.c b/builtin/checkout.c
index 7dc0f4d3f3..ceb635de36 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -1268,14 +1268,10 @@ static struct option *add_common_options(struct 
checkout_opts *opts,
        return newopts;
 }
 
-static struct option *add_switch_branch_options(struct checkout_opts *opts,
-                                               struct option *prevopts)
+static struct option *add_common_switch_branch_options(
+       struct checkout_opts *opts, struct option *prevopts)
 {
        struct option options[] = {
-               OPT_STRING('b', NULL, &opts->new_branch, N_("branch"),
-                          N_("create and checkout a new branch")),
-               OPT_STRING('B', NULL, &opts->new_branch_force, N_("branch"),
-                          N_("create/reset and checkout a branch")),
                OPT_BOOL('l', NULL, &opts->new_branch_log, N_("create reflog 
for new branch")),
                OPT_BOOL(0, "detach", &opts->force_detach, N_("detach HEAD at 
named commit")),
                OPT_SET_INT('t', "track",  &opts->track, N_("set upstream info 
for new branch"),
@@ -1461,15 +1457,21 @@ static int checkout_main(int argc, const char **argv, 
const char *prefix,
 int cmd_checkout(int argc, const char **argv, const char *prefix)
 {
        struct checkout_opts opts;
-       struct option *options = NULL;
+       struct option *options;
+       struct option checkout_options[] = {
+               OPT_STRING('b', NULL, &opts.new_branch, N_("branch"),
+                          N_("create and checkout a new branch")),
+               OPT_STRING('B', NULL, &opts.new_branch_force, N_("branch"),
+                          N_("create/reset and checkout a branch")),
+       };
        int ret;
 
        memset(&opts, 0, sizeof(opts));
        opts.dwim_new_local_branch = 1;
 
-       options = parse_options_dup(options);
+       options = parse_options_dup(checkout_options);
        options = add_common_options(&opts, options);
-       options = add_switch_branch_options(&opts, options);
+       options = add_common_switch_branch_options(&opts, options);
        options = add_checkout_path_options(&opts, options);
 
        ret = checkout_main(argc, argv, prefix, &opts,
@@ -1482,14 +1484,20 @@ int cmd_switch_branch(int argc, const char **argv, 
const char *prefix)
 {
        struct checkout_opts opts;
        struct option *options = NULL;
+       struct option switch_options[] = {
+               OPT_STRING('c', "create", &opts.new_branch, N_("branch"),
+                          N_("create and switch to a new branch")),
+               OPT_STRING('C', "force-create", &opts.new_branch_force, 
N_("branch"),
+                          N_("create/reset and switch to a new branch")),
+       };
        int ret;
 
        memset(&opts, 0, sizeof(opts));
        opts.dwim_new_local_branch = 1;
 
-       options = parse_options_dup(options);
+       options = parse_options_dup(switch_options);
        options = add_common_options(&opts, options);
-       options = add_switch_branch_options(&opts, options);
+       options = add_common_switch_branch_options(&opts, options);
 
        ret = checkout_main(argc, argv, prefix, &opts,
                            options, switch_branch_usage);
-- 
2.20.0.rc1.380.g3eb999425c.dirty

Reply via email to