repository: add index_state to struct repo

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Brandon Williams 2017-06-22 11:43:43 -07:00 committed by Junio C Hamano
parent 3b256228a6
commit 639e30b5b2
2 changed files with 25 additions and 0 deletions

View File

@ -163,4 +163,20 @@ void repo_clear(struct repository *repo)
free(repo->config);
repo->config = NULL;
}
if (repo->index) {
discard_index(repo->index);
free(repo->index);
repo->index = NULL;
}
}
int repo_read_index(struct repository *repo)
{
if (!repo->index)
repo->index = xcalloc(1, sizeof(*repo->index));
else
discard_index(repo->index);
return read_index_from(repo->index, repo->index_file);
}

View File

@ -2,6 +2,7 @@
#define REPOSITORY_H
struct config_set;
struct index_state;
struct repository {
/* Environment */
@ -49,6 +50,12 @@ struct repository {
*/
struct config_set *config;
/*
* Repository's in-memory index.
* 'repo_read_index()' can be used to populate 'index'.
*/
struct index_state *index;
/* Configurations */
/*
* Bit used during initialization to indicate if repository state (like
@ -71,4 +78,6 @@ extern void repo_set_worktree(struct repository *repo, const char *path);
extern int repo_init(struct repository *repo, const char *gitdir, const char *worktree);
extern void repo_clear(struct repository *repo);
extern int repo_read_index(struct repository *repo);
#endif /* REPOSITORY_H */