worktree: remove extra members from struct add_opts

There are two members of 'struct add_opts', which are only used inside
the 'add()' function, but being part of 'struct add_opts' they are
needlessly also passed to the 'add_worktree' function.

Make them local to the 'add()' function to make it clearer where they
are used.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Thomas Gummerer 2018-04-24 22:56:32 +01:00 committed by Junio C Hamano
parent 5be1f00a9a
commit d861d34a6e

View File

@ -27,8 +27,6 @@ struct add_opts {
int detach; int detach;
int checkout; int checkout;
int keep_locked; int keep_locked;
const char *new_branch;
int force_new_branch;
}; };
static int show_only; static int show_only;
@ -363,10 +361,11 @@ static int add(int ac, const char **av, const char *prefix)
const char *new_branch_force = NULL; const char *new_branch_force = NULL;
char *path; char *path;
const char *branch; const char *branch;
const char *new_branch = NULL;
const char *opt_track = NULL; const char *opt_track = NULL;
struct option options[] = { struct option options[] = {
OPT__FORCE(&opts.force, N_("checkout <branch> even if already checked out in other worktree")), OPT__FORCE(&opts.force, N_("checkout <branch> even if already checked out in other worktree")),
OPT_STRING('b', NULL, &opts.new_branch, N_("branch"), OPT_STRING('b', NULL, &new_branch, N_("branch"),
N_("create a new branch")), N_("create a new branch")),
OPT_STRING('B', NULL, &new_branch_force, N_("branch"), OPT_STRING('B', NULL, &new_branch_force, N_("branch"),
N_("create or reset a branch")), N_("create or reset a branch")),
@ -384,7 +383,7 @@ static int add(int ac, const char **av, const char *prefix)
memset(&opts, 0, sizeof(opts)); memset(&opts, 0, sizeof(opts));
opts.checkout = 1; opts.checkout = 1;
ac = parse_options(ac, av, prefix, options, worktree_usage, 0); ac = parse_options(ac, av, prefix, options, worktree_usage, 0);
if (!!opts.detach + !!opts.new_branch + !!new_branch_force > 1) if (!!opts.detach + !!new_branch + !!new_branch_force > 1)
die(_("-b, -B, and --detach are mutually exclusive")); die(_("-b, -B, and --detach are mutually exclusive"));
if (ac < 1 || ac > 2) if (ac < 1 || ac > 2)
usage_with_options(worktree_usage, options); usage_with_options(worktree_usage, options);
@ -395,33 +394,33 @@ static int add(int ac, const char **av, const char *prefix)
if (!strcmp(branch, "-")) if (!strcmp(branch, "-"))
branch = "@{-1}"; branch = "@{-1}";
opts.force_new_branch = !!new_branch_force; if (new_branch_force) {
if (opts.force_new_branch) {
struct strbuf symref = STRBUF_INIT; struct strbuf symref = STRBUF_INIT;
opts.new_branch = new_branch_force; new_branch = new_branch_force;
if (!opts.force && if (!opts.force &&
!strbuf_check_branch_ref(&symref, opts.new_branch) && !strbuf_check_branch_ref(&symref, new_branch) &&
ref_exists(symref.buf)) ref_exists(symref.buf))
die_if_checked_out(symref.buf, 0); die_if_checked_out(symref.buf, 0);
strbuf_release(&symref); strbuf_release(&symref);
} }
if (ac < 2 && !opts.new_branch && !opts.detach) { if (ac < 2 && !new_branch && !opts.detach) {
int n; int n;
const char *s = worktree_basename(path, &n); const char *s = worktree_basename(path, &n);
opts.new_branch = xstrndup(s, n); new_branch = xstrndup(s, n);
UNLEAK(new_branch);
if (guess_remote) { if (guess_remote) {
struct object_id oid; struct object_id oid;
const char *remote = const char *remote =
unique_tracking_name(opts.new_branch, &oid); unique_tracking_name(new_branch, &oid);
if (remote) if (remote)
branch = remote; branch = remote;
} }
} }
if (ac == 2 && !opts.new_branch && !opts.detach) { if (ac == 2 && !new_branch && !opts.detach) {
struct object_id oid; struct object_id oid;
struct commit *commit; struct commit *commit;
const char *remote; const char *remote;
@ -430,25 +429,25 @@ static int add(int ac, const char **av, const char *prefix)
if (!commit) { if (!commit) {
remote = unique_tracking_name(branch, &oid); remote = unique_tracking_name(branch, &oid);
if (remote) { if (remote) {
opts.new_branch = branch; new_branch = branch;
branch = remote; branch = remote;
} }
} }
} }
if (opts.new_branch) { if (new_branch) {
struct child_process cp = CHILD_PROCESS_INIT; struct child_process cp = CHILD_PROCESS_INIT;
cp.git_cmd = 1; cp.git_cmd = 1;
argv_array_push(&cp.args, "branch"); argv_array_push(&cp.args, "branch");
if (opts.force_new_branch) if (new_branch_force)
argv_array_push(&cp.args, "--force"); argv_array_push(&cp.args, "--force");
argv_array_push(&cp.args, opts.new_branch); argv_array_push(&cp.args, new_branch);
argv_array_push(&cp.args, branch); argv_array_push(&cp.args, branch);
if (opt_track) if (opt_track)
argv_array_push(&cp.args, opt_track); argv_array_push(&cp.args, opt_track);
if (run_command(&cp)) if (run_command(&cp))
return -1; return -1;
branch = opts.new_branch; branch = new_branch;
} else if (opt_track) { } else if (opt_track) {
die(_("--[no-]track can only be used if a new branch is created")); die(_("--[no-]track can only be used if a new branch is created"));
} }