Signed-off-by: Brandon Williams <[email protected]>
---
repository.c | 16 ++++++++++++++++
repository.h | 4 ++++
2 files changed, 20 insertions(+)
diff --git a/repository.c b/repository.c
index fd53d6bf7..21719d0a6 100644
--- a/repository.c
+++ b/repository.c
@@ -186,5 +186,21 @@ void repo_clear(struct repository *repo)
repo->config = NULL;
}
+ if (repo->index) {
+ discard_index(repo->index);
+ free(repo->index);
+ repo->index = NULL;
+ }
+
memset(repo, 0, sizeof(*repo));
}
+
+int repo_read_index(struct repository *repo)
+{
+ if (!repo->index)
+ repo->index = xcalloc(1, sizeof(struct index_state));
+ else
+ discard_index(repo->index);
+
+ return read_index_from(repo->index, repo->index_file);
+}
diff --git a/repository.h b/repository.h
index 2b757df25..9515cc631 100644
--- a/repository.h
+++ b/repository.h
@@ -2,6 +2,7 @@
#define REPOSITORY_H
struct config_set;
+struct index_state;
struct repository {
/* Environment */
@@ -20,6 +21,7 @@ struct repository {
* ~/.gitconfig, XDG config file and the global /etc/gitconfig)
*/
struct config_set *config;
+ struct index_state *index;
/* Configurations */
unsigned ignore_env:1;
@@ -35,4 +37,6 @@ extern char *repo_worktree_path(struct repository *repo,
const char *path);
extern int repo_init(struct repository *repo, const char *path);
extern void repo_clear(struct repository *repo);
+extern int repo_read_index(struct repository *repo);
+
#endif /* REPOSITORY_H */
--
2.13.1.508.gb3defc5cc-goog