worktree: introduce "add" command
The plan is to relocate "git checkout --to" functionality to "git worktree add". As a first step, introduce a bare-bones git-worktree "add" command along with documentation. At this stage, "git worktree add" merely invokes "git checkout --to" behind the scenes, but an upcoming patch will move the actual functionality (checkout.c:prepare_linked_checkout() and its helpers) to worktree.c. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
bdf0f375b9
commit
fc56361f58
@ -2,8 +2,11 @@
|
||||
#include "builtin.h"
|
||||
#include "dir.h"
|
||||
#include "parse-options.h"
|
||||
#include "argv-array.h"
|
||||
#include "run-command.h"
|
||||
|
||||
static const char * const worktree_usage[] = {
|
||||
N_("git worktree add <path> <branch>"),
|
||||
N_("git worktree prune [<options>]"),
|
||||
NULL
|
||||
};
|
||||
@ -119,6 +122,32 @@ static int prune(int ac, const char **av, const char *prefix)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int add(int ac, const char **av, const char *prefix)
|
||||
{
|
||||
struct child_process c;
|
||||
const char *path, *branch;
|
||||
struct argv_array cmd = ARGV_ARRAY_INIT;
|
||||
struct option options[] = {
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
ac = parse_options(ac, av, prefix, options, worktree_usage, 0);
|
||||
if (ac != 2)
|
||||
usage_with_options(worktree_usage, options);
|
||||
|
||||
path = prefix ? prefix_filename(prefix, strlen(prefix), av[0]) : av[0];
|
||||
branch = av[1];
|
||||
|
||||
argv_array_push(&cmd, "checkout");
|
||||
argv_array_pushl(&cmd, "--to", path, NULL);
|
||||
argv_array_push(&cmd, branch);
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.git_cmd = 1;
|
||||
c.argv = cmd.argv;
|
||||
return run_command(&c);
|
||||
}
|
||||
|
||||
int cmd_worktree(int ac, const char **av, const char *prefix)
|
||||
{
|
||||
struct option options[] = {
|
||||
@ -127,6 +156,8 @@ int cmd_worktree(int ac, const char **av, const char *prefix)
|
||||
|
||||
if (ac < 2)
|
||||
usage_with_options(worktree_usage, options);
|
||||
if (!strcmp(av[1], "add"))
|
||||
return add(ac - 1, av + 1, prefix);
|
||||
if (!strcmp(av[1], "prune"))
|
||||
return prune(ac - 1, av + 1, prefix);
|
||||
usage_with_options(worktree_usage, options);
|
||||
|
Reference in New Issue
Block a user