diff --git a/include/git2/index.h b/include/git2/index.h index 2a0b001ff..bca9791c5 100644 --- a/include/git2/index.h +++ b/include/git2/index.h @@ -125,6 +125,19 @@ enum { */ GIT_EXTERN(int) git_index_open(git_index **index, const char *index_path); +/** + * Create an in-memory index object. + * + * This index object cannot be read/written to the filesystem, + * but may be used to perform in-memory index operations. + * + * The index must be freed once it's no longer in use. + * + * @param index the pointer for the new index + * @return 0 or an error code + */ +GIT_EXTERN(int) git_index_new(git_index **index); + /** * Free an existing index object. * diff --git a/src/index.c b/src/index.c index ffa63f6a7..cb83015a6 100644 --- a/src/index.c +++ b/src/index.c @@ -287,6 +287,11 @@ int git_index_open(git_index **index_out, const char *index_path) return (index_path != NULL) ? git_index_read(index) : 0; } +int git_index_new(git_index **out) +{ + return git_index_open(out, NULL); +} + static void index_free(git_index *index) { git_index_entry *e;