Browse Source

Teach builtin-add to pass multiple paths to git-add--interactive

Instead of just accepting a single file parameter, git-add now accepts
any number of path parameters, fowarding them to git-add--interactive.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Wincent Colaiuta 17 years ago committed by Junio C Hamano
parent
commit
7c0ab44589
  1. 23
      builtin-add.c
  2. 2
      commit.h

23
builtin-add.c

@ -135,11 +135,17 @@ static void refresh(int verbose, const char **pathspec) @@ -135,11 +135,17 @@ static void refresh(int verbose, const char **pathspec)
free(seen);
}

int interactive_add(void)
int interactive_add(int argc, const char **argv)
{
const char *argv[2] = { "add--interactive", NULL };

return run_command_v_opt(argv, RUN_GIT_CMD);
int status;
const char **args = xmalloc(sizeof(const char *) * (argc + 1));
args[0] = "add--interactive";
memcpy((void *)args + sizeof(const char *), argv, sizeof(const char *) * argc);
args[argc + 1] = NULL;

status = run_command_v_opt(args, RUN_GIT_CMD);
free(args);
return status;
}

static struct lock_file lock_file;
@ -163,17 +169,14 @@ static struct option builtin_add_options[] = { @@ -163,17 +169,14 @@ static struct option builtin_add_options[] = {

int cmd_add(int argc, const char **argv, const char *prefix)
{
int i, newfd, orig_argc = argc;
int i, newfd;
const char **pathspec;
struct dir_struct dir;

argc = parse_options(argc, argv, builtin_add_options,
builtin_add_usage, 0);
if (add_interactive) {
if (add_interactive != 1 || orig_argc != 2)
die("add --interactive does not take any parameters");
exit(interactive_add());
}
if (add_interactive)
exit(interactive_add(argc, argv));

git_config(git_default_config);


2
commit.h

@ -113,7 +113,7 @@ extern struct commit_list *get_shallow_commits(struct object_array *heads, @@ -113,7 +113,7 @@ extern struct commit_list *get_shallow_commits(struct object_array *heads,

int in_merge_bases(struct commit *, struct commit **, int);

extern int interactive_add(void);
extern int interactive_add(int argc, const char **argv);
extern void add_files_to_cache(int verbose, const char *prefix, const char **files);
extern int rerere(void);


Loading…
Cancel
Save