worktree: add: introduce --checkout option
By adding this option which defaults to true, we can use the corresponding --no-checkout to make some customizations before the checkout, like sparse checkout, etc. Helped-by: Eric Sunshine <sunshine@sunshineco.com> Helped-by: Junio C Hamano <gitster@pobox.com> Reviewed-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Ray Zhang <zhanglei002@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
56331f8727
commit
ef2a0ac9a0
@ -21,6 +21,7 @@ static const char * const worktree_usage[] = {
|
||||
struct add_opts {
|
||||
int force;
|
||||
int detach;
|
||||
int checkout;
|
||||
const char *new_branch;
|
||||
int force_new_branch;
|
||||
};
|
||||
@ -284,18 +285,22 @@ static int add_worktree(const char *path, const char *refname,
|
||||
if (ret)
|
||||
goto done;
|
||||
|
||||
cp.argv = NULL;
|
||||
argv_array_clear(&cp.args);
|
||||
argv_array_pushl(&cp.args, "reset", "--hard", NULL);
|
||||
cp.env = child_env.argv;
|
||||
ret = run_command(&cp);
|
||||
if (!ret) {
|
||||
is_junk = 0;
|
||||
free(junk_work_tree);
|
||||
free(junk_git_dir);
|
||||
junk_work_tree = NULL;
|
||||
junk_git_dir = NULL;
|
||||
if (opts->checkout) {
|
||||
cp.argv = NULL;
|
||||
argv_array_clear(&cp.args);
|
||||
argv_array_pushl(&cp.args, "reset", "--hard", NULL);
|
||||
cp.env = child_env.argv;
|
||||
ret = run_command(&cp);
|
||||
if (ret)
|
||||
goto done;
|
||||
}
|
||||
|
||||
is_junk = 0;
|
||||
free(junk_work_tree);
|
||||
free(junk_git_dir);
|
||||
junk_work_tree = NULL;
|
||||
junk_git_dir = NULL;
|
||||
|
||||
done:
|
||||
strbuf_reset(&sb);
|
||||
strbuf_addf(&sb, "%s/locked", sb_repo.buf);
|
||||
@ -320,10 +325,12 @@ static int add(int ac, const char **av, const char *prefix)
|
||||
OPT_STRING('B', NULL, &new_branch_force, N_("branch"),
|
||||
N_("create or reset a branch")),
|
||||
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_END()
|
||||
};
|
||||
|
||||
memset(&opts, 0, sizeof(opts));
|
||||
opts.checkout = 1;
|
||||
ac = parse_options(ac, av, prefix, options, worktree_usage, 0);
|
||||
if (!!opts.detach + !!opts.new_branch + !!new_branch_force > 1)
|
||||
die(_("-b, -B, and --detach are mutually exclusive"));
|
||||
|
Reference in New Issue
Block a user