Exemplo n.º 1
0
static void prime_cache_tree_rec(struct cache_tree *it, struct tree *tree)
{
	struct tree_desc desc;
	struct name_entry entry;
	int cnt;

	hashcpy(it->sha1, tree->object.sha1);
	init_tree_desc(&desc, tree->buffer, tree->size);
	cnt = 0;
	while (tree_entry(&desc, &entry)) {
		if (!S_ISDIR(entry.mode))
			cnt++;
		else {
			struct cache_tree_sub *sub;
			struct tree *subtree = lookup_tree(entry.sha1);
			if (!subtree->object.parsed)
				parse_tree(subtree);
			sub = cache_tree_sub(it, entry.path);
			sub->cache_tree = cache_tree();
			prime_cache_tree_rec(sub->cache_tree, subtree);
			cnt += sub->cache_tree->entry_count;
		}
	}
	it->entry_count = cnt;
}
Exemplo n.º 2
0
void prime_cache_tree(struct index_state *istate, struct tree *tree)
{
	cache_tree_free(&istate->cache_tree);
	istate->cache_tree = cache_tree();
	prime_cache_tree_rec(istate->cache_tree, tree);
	istate->cache_changed |= CACHE_TREE_CHANGED;
}
Exemplo n.º 3
0
void prime_cache_tree(struct cache_tree **it, struct tree *tree)
{
	cache_tree_free(it);
	*it = cache_tree();
	prime_cache_tree_rec(*it, tree);
}