cache-tree: allow writing in-memory index as tree
The function `write_in_core_index_as_tree()` takes a repository and writes its index into a tree object. What this function cannot do though is to take an _arbitrary_ in-memory index. Introduce a new `struct index_state` parameter so that the caller can pass a different index than the one belonging to the repository. This will be used in a subsequent commit. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
48f6d92328
commit
a021e4f92c
|
|
@ -891,7 +891,8 @@ static int merge_working_tree(const struct checkout_opts *opts,
|
||||||
0);
|
0);
|
||||||
init_ui_merge_options(&o, the_repository);
|
init_ui_merge_options(&o, the_repository);
|
||||||
o.verbosity = 0;
|
o.verbosity = 0;
|
||||||
work = write_in_core_index_as_tree(the_repository);
|
work = write_in_core_index_as_tree(the_repository,
|
||||||
|
the_repository->index);
|
||||||
|
|
||||||
ret = reset_tree(new_tree,
|
ret = reset_tree(new_tree,
|
||||||
opts, 1,
|
opts, 1,
|
||||||
|
|
|
||||||
|
|
@ -723,11 +723,11 @@ static int write_index_as_tree_internal(struct object_id *oid,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct tree* write_in_core_index_as_tree(struct repository *repo) {
|
struct tree *write_in_core_index_as_tree(struct repository *repo,
|
||||||
|
struct index_state *index_state) {
|
||||||
struct object_id o;
|
struct object_id o;
|
||||||
int was_valid, ret;
|
int was_valid, ret;
|
||||||
|
|
||||||
struct index_state *index_state = repo->index;
|
|
||||||
was_valid = index_state->cache_tree &&
|
was_valid = index_state->cache_tree &&
|
||||||
cache_tree_fully_valid(index_state->cache_tree);
|
cache_tree_fully_valid(index_state->cache_tree);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,8 @@ int cache_tree_verify(struct repository *, struct index_state *);
|
||||||
#define WRITE_TREE_UNMERGED_INDEX (-2)
|
#define WRITE_TREE_UNMERGED_INDEX (-2)
|
||||||
#define WRITE_TREE_PREFIX_ERROR (-3)
|
#define WRITE_TREE_PREFIX_ERROR (-3)
|
||||||
|
|
||||||
struct tree* write_in_core_index_as_tree(struct repository *repo);
|
struct tree *write_in_core_index_as_tree(struct repository *repo,
|
||||||
|
struct index_state *index_state);
|
||||||
int write_index_as_tree(struct object_id *oid, struct index_state *index_state, const char *index_path, int flags, const char *prefix);
|
int write_index_as_tree(struct object_id *oid, struct index_state *index_state, const char *index_path, int flags, const char *prefix);
|
||||||
void prime_cache_tree(struct repository *, struct index_state *, struct tree *);
|
void prime_cache_tree(struct repository *, struct index_state *, struct tree *);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue