Skip to content

Commit

Permalink
Teach builtin-add to pass multiple paths to git-add--interactive
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Wincent Colaiuta authored and Junio C Hamano committed Nov 22, 2007
1 parent a7d9da6 commit 7c0ab44
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 11 deletions.
23 changes: 13 additions & 10 deletions builtin-add.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);

Expand Down
2 changes: 1 addition & 1 deletion commit.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit 7c0ab44

Please sign in to comment.