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>
This commit is contained in:
committed by
Junio C Hamano
parent
c4738aedc0
commit
e284e892ca
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user