Skip to content

Commit

Permalink
Introduce entry point add_interactive and add_files_to_cache
Browse files Browse the repository at this point in the history
This refactors builtin-add.c a little to provide a unique entry point
for launching git add --interactive, which will be used by
builtin-commit too.  If we later want to make add --interactive a
builtin or change how it is launched, we just start from this function.

It also exports the private function update() which is used to
add all modified paths to the index as add_files_to_cache().

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Kristian Høgsberg authored and Junio C Hamano committed Sep 27, 2007
1 parent a17ba31 commit 5868016
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
23 changes: 14 additions & 9 deletions builtin-add.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "diffcore.h"
#include "commit.h"
#include "revision.h"
#include "run-command.h"

static const char builtin_add_usage[] =
"git-add [-n] [-v] [-f] [--interactive | -i] [-u] [--refresh] [--] <filepattern>...";
Expand Down Expand Up @@ -106,7 +107,7 @@ static void update_callback(struct diff_queue_struct *q,
}
}

static void update(int verbose, const char *prefix, const char **files)
void add_files_to_cache(int verbose, const char *prefix, const char **files)
{
struct rev_info rev;
init_revisions(&rev, prefix);
Expand All @@ -115,8 +116,6 @@ static void update(int verbose, const char *prefix, const char **files)
rev.diffopt.output_format = DIFF_FORMAT_CALLBACK;
rev.diffopt.format_callback = update_callback;
rev.diffopt.format_callback_data = &verbose;
if (read_cache() < 0)
die("index file corrupt");
run_diff_files(&rev, 0);
}

Expand Down Expand Up @@ -149,6 +148,13 @@ static int git_add_config(const char *var, const char *value)
return git_default_config(var, value);
}

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

return run_command_v_opt(argv, RUN_GIT_CMD);
}

static struct lock_file lock_file;

static const char ignore_error[] =
Expand All @@ -168,12 +174,9 @@ int cmd_add(int argc, const char **argv, const char *prefix)
add_interactive++;
}
if (add_interactive) {
const char *args[] = { "add--interactive", NULL };

if (add_interactive != 1 || argc != 2)
if (argc != 2)
die("add --interactive does not take any parameters");
execv_git_cmd(args);
exit(1);
exit(interactive_add());
}

git_config(git_add_config);
Expand Down Expand Up @@ -213,7 +216,9 @@ int cmd_add(int argc, const char **argv, const char *prefix)
}

if (take_worktree_changes) {
update(verbose, prefix, argv + i);
if (read_cache() < 0)
die("index file corrupt");
add_files_to_cache(verbose, prefix, argv + i);
goto finish;
}

Expand Down
4 changes: 4 additions & 0 deletions commit.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,8 @@ extern struct commit_list *get_shallow_commits(struct object_array *heads,
int depth, int shallow_flag, int not_shallow_flag);

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

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

#endif /* COMMIT_H */

0 comments on commit 5868016

Please sign in to comment.