git-p4: don't groom exclude path list on every commit
[gitweb.git] / builtin / add.c
index 95a7ec126e68053354d6989a6503d4ae2034ebb0..db2dfa43502d0059219189f01731e143982345ab 100644 (file)
@@ -3,6 +3,7 @@
  *
  * Copyright (C) 2006 Linus Torvalds
  */
+#define USE_THE_INDEX_COMPATIBILITY_MACROS
 #include "cache.h"
 #include "config.h"
 #include "builtin.h"
@@ -110,7 +111,7 @@ int add_files_to_cache(const char *prefix,
        memset(&data, 0, sizeof(data));
        data.flags = flags;
 
-       init_revisions(&rev, prefix);
+       repo_init_revisions(the_repository, &rev, prefix);
        setup_revisions(0, NULL, &rev, NULL);
        if (pathspec)
                copy_pathspec(&rev.prune_data, pathspec);
@@ -176,7 +177,7 @@ static void refresh(int verbose, const struct pathspec *pathspec)
                        die(_("pathspec '%s' did not match any files"),
                            pathspec->items[i].match);
        }
-        free(seen);
+       free(seen);
 }
 
 int run_add_interactive(const char *revision, const char *patch_mode,
@@ -232,14 +233,14 @@ static int edit_patch(int argc, const char **argv, const char *prefix)
        if (read_cache() < 0)
                die(_("Could not read the index"));
 
-       init_revisions(&rev, prefix);
+       repo_init_revisions(the_repository, &rev, prefix);
        rev.diffopt.context = 7;
 
        argc = setup_revisions(argc, argv, &rev, NULL);
        rev.diffopt.output_format = DIFF_FORMAT_PATCH;
        rev.diffopt.use_color = 0;
        rev.diffopt.flags.ignore_dirty_submodules = 1;
-       out = open(file, O_CREAT | O_WRONLY, 0666);
+       out = open(file, O_CREAT | O_WRONLY | O_TRUNC, 0666);
        if (out < 0)
                die(_("Could not open '%s' for writing."), file);
        rev.diffopt.file = xfdopen(out, "w");
@@ -445,11 +446,6 @@ int cmd_add(int argc, const char **argv, const char *prefix)
                return 0;
        }
 
-       if (read_cache() < 0)
-               die(_("index file corrupt"));
-
-       die_in_unpopulated_submodule(&the_index, prefix);
-
        /*
         * Check the "pathspec '%s' did not match any files" block
         * below before enabling new magic.
@@ -459,6 +455,10 @@ int cmd_add(int argc, const char **argv, const char *prefix)
                       PATHSPEC_SYMLINK_LEADING_PATH,
                       prefix, argv);
 
+       if (read_cache_preload(&pathspec) < 0)
+               die(_("index file corrupt"));
+
+       die_in_unpopulated_submodule(&the_index, prefix);
        die_path_inside_submodule(&the_index, &pathspec);
 
        if (add_new_files) {