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. Signed-off-by: Kristian Høgsberg <krh@xxxxxxxxxx> --- builtin-add.c | 15 ++++++++++----- commit.h | 9 +++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/builtin-add.c b/builtin-add.c index 3dd4ded..e79e8f7 100644 --- a/builtin-add.c +++ b/builtin-add.c @@ -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] [--] <filepattern>..."; @@ -153,6 +154,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_warning[] = @@ -172,12 +180,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); diff --git a/commit.h b/commit.h index 467872e..64e1d4b 100644 --- a/commit.h +++ b/commit.h @@ -122,4 +122,13 @@ 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 const unsigned char * +create_commit(const unsigned char *tree_sha1, + unsigned char parent_sha1[][20], int parents, + const char *author_info, const char *committer_info, + const char *message, int length); + +extern int interactive_add(void); + #endif /* COMMIT_H */ -- 1.5.2.GIT - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html