#include "dir.h"
#include "builtin.h"
-#define MAX_TREES 4
+#define MAX_TREES 8
static int nr_trees;
static struct tree *trees[MAX_TREES];
{
struct tree *tree;
- if (nr_trees >= 4)
- return -1;
+ if (nr_trees >= MAX_TREES)
+ die("I cannot read more than %d trees", MAX_TREES);
tree = parse_tree_indirect(sha1);
if (!tree)
return -1;
continue;
cache_tree_invalidate_path(active_cache_tree, ce->name);
last = ce;
- ce->ce_mode = 0;
- ce->ce_flags &= ~htons(CE_STAGEMASK);
+ ce->ce_flags |= CE_REMOVE;
}
*dst++ = ce;
}
opts.head_idx = 1;
}
- if (MAX_TREES < nr_trees)
- die("I cannot read more than %d trees", MAX_TREES);
-
for (i = 0; i < nr_trees; i++) {
struct tree *tree = trees[i];
parse_tree(tree);
init_tree_desc(t+i, tree->buffer, tree->size);
}
- unpack_trees(nr_trees, t, &opts);
+ if (unpack_trees(nr_trees, t, &opts))
+ return 128;
/*
* When reading only one tree (either the most basic form,
}
if (write_cache(newfd, active_cache, active_nr) ||
- close(newfd) || commit_locked_index(&lock_file))
+ commit_locked_index(&lock_file))
die("unable to write new index file");
return 0;
}