diff options
author | Thomas Gummerer <t.gummerer@gmail.com> | 2017-11-26 19:43:53 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-11-27 09:48:06 +0900 |
commit | e284e892ca278e4eb1e7eabd53a000bc897c3f25 (patch) | |
tree | 6d8ef3b931f817cdcaf1eab9909bbc4e879d64a2 /builtin | |
parent | c4738aedc0aee085e25e20b6c32b9c4680f265d1 (diff) | |
download | git-e284e892ca278e4eb1e7eabd53a000bc897c3f25.tar.gz git-e284e892ca278e4eb1e7eabd53a000bc897c3f25.tar.xz |
worktree: add --[no-]track option to the add subcommand
Currently 'git worktree add' sets up tracking branches if '<branch>' is
a remote tracking branch, and doesn't set them up otherwise, as is the
default for 'git branch'.
This may or may not be what the user wants. Allow overriding this
behaviour with a --[no-]track flag that gets passed through to 'git
branch'.
We already respect branch.autoSetupMerge, as 'git worktree' just calls
'git branch' internally.
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/worktree.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/builtin/worktree.c b/builtin/worktree.c index ed043d5f1..ea9678cac 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -341,6 +341,7 @@ static int add(int ac, const char **av, const char *prefix) const char *new_branch_force = NULL; char *path; const char *branch; + const char *opt_track = NULL; struct option options[] = { OPT__FORCE(&opts.force, N_("checkout <branch> even if already checked out in other worktree")), OPT_STRING('b', NULL, &opts.new_branch, N_("branch"), @@ -350,6 +351,9 @@ static int add(int ac, const char **av, const char *prefix) OPT_BOOL(0, "detach", &opts.detach, N_("detach HEAD at named commit")), OPT_BOOL(0, "checkout", &opts.checkout, N_("populate the new working tree")), OPT_BOOL(0, "lock", &opts.keep_locked, N_("keep the new working tree locked")), + OPT_PASSTHRU(0, "track", &opt_track, NULL, + N_("set up tracking mode (see git-branch(1))"), + PARSE_OPT_NOARG | PARSE_OPT_OPTARG), OPT_END() }; @@ -394,9 +398,13 @@ static int add(int ac, const char **av, const char *prefix) argv_array_push(&cp.args, "--force"); argv_array_push(&cp.args, opts.new_branch); argv_array_push(&cp.args, branch); + if (opt_track) + argv_array_push(&cp.args, opt_track); if (run_command(&cp)) return -1; branch = opts.new_branch; + } else if (opt_track) { + die(_("--[no-]track can only be used if a new branch is created")); } UNLEAK(path); |