From 639e30b5b2214c68c042215a279ac1fbb372d73d Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 22 Jun 2017 11:43:43 -0700 Subject: repository: add index_state to struct repo Signed-off-by: Brandon Williams Signed-off-by: Junio C Hamano --- repository.c | 16 ++++++++++++++++ repository.h | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/repository.c b/repository.c index 686a964ad6..6f6f4d91ef 100644 --- a/repository.c +++ b/repository.c @@ -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); } diff --git a/repository.h b/repository.h index 8ae5e8653a..3a41568aa0 100644 --- a/repository.h +++ b/repository.h @@ -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 */ -- cgit v1.2.1