mv: move submodules using a gitfile
[gitweb.git] / builtin / reset.c
index 313b296efc7eb68b43ab6604f83c135846368cd9..86150d14f1481df93685043736c18be9ad9ef768 100644 (file)
@@ -133,12 +133,13 @@ static void update_index_from_diff(struct diff_queue_struct *q,
        }
 }
 
-static int read_from_tree(const char **pathspec, unsigned char *tree_sha1)
+static int read_from_tree(const struct pathspec *pathspec,
+                         unsigned char *tree_sha1)
 {
        struct diff_options opt;
 
        memset(&opt, 0, sizeof(opt));
-       diff_tree_setup_paths(pathspec, &opt);
+       copy_pathspec(&opt.pathspec, pathspec);
        opt.output_format = DIFF_FORMAT_CALLBACK;
        opt.format_callback = update_index_from_diff;
 
@@ -147,7 +148,7 @@ static int read_from_tree(const char **pathspec, unsigned char *tree_sha1)
                return 1;
        diffcore_std(&opt);
        diff_flush(&opt);
-       diff_tree_release_paths(&opt);
+       free_pathspec(&opt.pathspec);
 
        return 0;
 }
@@ -219,9 +220,9 @@ static void parse_args(struct pathspec *pathspec,
                }
        }
        *rev_ret = rev;
-       parse_pathspec(pathspec,
-                      patch_mode ? PATHSPEC_ALL_MAGIC & ~PATHSPEC_FROMTOP : 0,
-                      PATHSPEC_PREFER_FULL,
+       parse_pathspec(pathspec, 0,
+                      PATHSPEC_PREFER_FULL |
+                      (patch_mode ? PATHSPEC_PREFIX_ORIGIN : 0),
                       prefix, argv);
 }
 
@@ -299,7 +300,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
        if (patch_mode) {
                if (reset_type != NONE)
                        die(_("--patch is incompatible with --{hard,mixed,soft}"));
-               return run_add_interactive(sha1_to_hex(sha1), "--patch=reset", pathspec.raw);
+               return run_add_interactive(sha1_to_hex(sha1), "--patch=reset", &pathspec);
        }
 
        /* git reset tree [--] paths... can be used to
@@ -332,7 +333,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
                struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
                int newfd = hold_locked_index(lock, 1);
                if (reset_type == MIXED) {
-                       if (read_from_tree(pathspec.raw, sha1))
+                       if (read_from_tree(&pathspec, sha1))
                                return 1;
                } else {
                        int err = reset_index(sha1, reset_type, quiet);