summaryrefslogtreecommitdiff
path: root/builtin-read-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-03-11 22:13:44 -0700
committerJunio C Hamano <gitster@pobox.com>2008-03-11 22:13:44 -0700
commitb85997d14d1873a4baa3d04966cd5947e6134acd (patch)
treeb21c76c4bc0d3fbb4221283334065216e17beff1 /builtin-read-tree.c
parentb81a7b58875e07d7e82aafced1de9834ba1ef94a (diff)
parent20a16eb33eee99fd3eab00c72f012b98d4eeee76 (diff)
downloadgit-b85997d14d1873a4baa3d04966cd5947e6134acd.tar.gz
Merge branch 'lt/unpack-trees'
* lt/unpack-trees: unpack_trees(): fix diff-index regression. traverse_trees_recursive(): propagate merge errors up unpack_trees(): minor memory leak fix in unused destination index Make 'unpack_trees()' have a separate source and destination index Make 'unpack_trees()' take the index to work on as an argument Add 'const' where appropriate to index handling functions Fix tree-walking compare_entry() in the presense of --prefix Move 'unpack_trees()' over to 'traverse_trees()' interface Make 'traverse_trees()' traverse conflicting DF entries in parallel Add return value to 'traverse_tree()' callback Make 'traverse_tree()' use linked structure rather than 'const char *base' Add 'df_name_compare()' helper function
Diffstat (limited to 'builtin-read-tree.c')
-rw-r--r--builtin-read-tree.c23
1 files changed, 2 insertions, 21 deletions
diff --git a/builtin-read-tree.c b/builtin-read-tree.c
index 0138f5a917..160456dad1 100644
--- a/builtin-read-tree.c
+++ b/builtin-read-tree.c
@@ -102,6 +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.src_index = &the_index;
+ opts.dst_index = &the_index;
git_config(git_default_config);
@@ -220,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);