Code

Make 'unpack_trees()' have a separate source and destination index
[git.git] / builtin-read-tree.c
index d004e9043100a45ae3ccf1d08f819cfdbc0b099c..160456dad13322e3547d6dc3fc91626bd3ec9c2b 100644 (file)
@@ -102,7 +102,8 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
 
        memset(&opts, 0, sizeof(opts));
        opts.head_idx = -1;
-       opts.index = &the_index;
+       opts.src_index = &the_index;
+       opts.dst_index = &the_index;
 
        git_config(git_default_config);
 
@@ -221,27 +222,6 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
        if ((opts.dir && !opts.update))
                die("--exclude-per-directory is meaningless unless -u");
 
-       if (opts.prefix) {
-               int pfxlen = strlen(opts.prefix);
-               int pos;
-               if (opts.prefix[pfxlen-1] != '/')
-                       die("prefix must end with /");
-               if (stage != 2)
-                       die("binding merge takes only one tree");
-               pos = cache_name_pos(opts.prefix, pfxlen);
-               if (0 <= pos)
-                       die("corrupt index file");
-               pos = -pos-1;
-               if (pos < active_nr &&
-                   !strncmp(active_cache[pos]->name, opts.prefix, pfxlen))
-                       die("subdirectory '%s' already exists.", opts.prefix);
-               pos = cache_name_pos(opts.prefix, pfxlen-1);
-               if (0 <= pos)
-                       die("file '%.*s' already exists.",
-                                       pfxlen-1, opts.prefix);
-               opts.pos = -1 - pos;
-       }
-
        if (opts.merge) {
                if (stage < 2)
                        die("just how do you expect me to merge %d trees?", stage-1);