contrib/hooks/post-receive-email: reformat to wrap comments at 76 chars
[gitweb.git] / builtin-add.c
index f61681c3ae186e1a6f96c5f7d4d6b978d0de5ddb..45b14e8a61764e18d8b89ebfef550a820ffbf831 100644 (file)
@@ -111,7 +111,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);
@@ -120,8 +120,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);
 }
 
@@ -155,6 +153,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[] =
@@ -183,12 +188,9 @@ int cmd_add(int argc, const char **argv, const char *prefix)
        argc = parse_options(argc, argv, builtin_add_options,
                          builtin_add_usage, 0);
        if (add_interactive) {
-               const char *args[] = { "add--interactive", NULL };
-
                if (add_interactive != 1 || orig_argc != 2)
                        die("add --interactive does not take any parameters");
-               execv_git_cmd(args);
-               exit(1);
+               exit(interactive_add());
        }
 
        git_config(git_add_config);
@@ -196,7 +198,9 @@ int cmd_add(int argc, const char **argv, const char *prefix)
        newfd = hold_locked_index(&lock_file, 1);
 
        if (take_worktree_changes) {
-               update(verbose, prefix, argv);
+               if (read_cache() < 0)
+                       die("index file corrupt");
+               add_files_to_cache(verbose, prefix, argv);
                goto finish;
        }