diff options
Diffstat (limited to 'repository.h')
-rw-r--r-- | repository.h | 56 |
1 files changed, 42 insertions, 14 deletions
diff --git a/repository.h b/repository.h index dba3ddbfdd..8981649d43 100644 --- a/repository.h +++ b/repository.h @@ -1,9 +1,13 @@ #ifndef REPOSITORY_H #define REPOSITORY_H +#include "path.h" + struct config_set; struct git_hash_algo; struct index_state; +struct lock_file; +struct pathspec; struct raw_object_store; struct submodule_cache; @@ -39,6 +43,11 @@ struct repository { struct ref_store *refs; /* + * Contains path to often used file names. + */ + struct path_cache cached_paths; + + /* * Path to the repository's graft file. * Cannot be NULL after initialization. */ @@ -103,19 +112,24 @@ struct set_gitdir_args { const char *alternate_db; }; -extern void repo_set_gitdir(struct repository *repo, - const char *root, - const struct set_gitdir_args *extra_args); -extern void repo_set_worktree(struct repository *repo, const char *path); -extern void repo_set_hash_algo(struct repository *repo, int algo); -extern void initialize_the_repository(void); -extern int repo_init(struct repository *r, - const char *gitdir, - const char *worktree); -extern int repo_submodule_init(struct repository *submodule, - struct repository *superproject, - const char *path); -extern void repo_clear(struct repository *repo); +void repo_set_gitdir(struct repository *repo, const char *root, + const struct set_gitdir_args *extra_args); +void repo_set_worktree(struct repository *repo, const char *path); +void repo_set_hash_algo(struct repository *repo, int algo); +void initialize_the_repository(void); +int repo_init(struct repository *r, const char *gitdir, const char *worktree); + +/* + * Initialize the repository 'subrepo' as the submodule given by the + * struct submodule 'sub' in parent repository 'superproject'. + * Return 0 upon success and a non-zero value upon failure, which may happen + * if the submodule is not found, or 'sub' is NULL. + */ +struct submodule; +int repo_submodule_init(struct repository *subrepo, + struct repository *superproject, + const struct submodule *sub); +void repo_clear(struct repository *repo); /* * Populates the repository's index from its index_file, an index struct will @@ -125,6 +139,20 @@ extern void repo_clear(struct repository *repo); * than zero if an error occured. If the repository's index has already been * populated then the number of entries will simply be returned. */ -extern int repo_read_index(struct repository *repo); +int repo_read_index(struct repository *repo); +int repo_hold_locked_index(struct repository *repo, + struct lock_file *lf, + int flags); + +int repo_read_index_preload(struct repository *, + const struct pathspec *pathspec, + unsigned refresh_flags); +int repo_read_index_unmerged(struct repository *); +/* + * Opportunistically update the index but do not complain if we can't. + * The lockfile is always committed or rolled back. + */ +void repo_update_index_if_able(struct repository *, struct lock_file *); + #endif /* REPOSITORY_H */ |