Commit 602ee38b by Vicent Marti

repository: Export all internal paths

parent 793545ef
...@@ -231,22 +231,31 @@ GIT_EXTERN(int) git_repository_init(git_repository **repo_out, const char *path, ...@@ -231,22 +231,31 @@ GIT_EXTERN(int) git_repository_init(git_repository **repo_out, const char *path,
GIT_EXTERN(int) git_repository_is_empty(git_repository *repo); GIT_EXTERN(int) git_repository_is_empty(git_repository *repo);
/** /**
* Get the normalized path to the git repository. * Internal path identifiers for a repository
*
* @param repo a repository object
* @return absolute path to the git directory
*/ */
GIT_EXTERN(const char *) git_repository_path(git_repository *repo); typedef enum {
GIT_REPO_PATH,
GIT_REPO_PATH_INDEX,
GIT_REPO_PATH_ODB,
GIT_REPO_PATH_WORKDIR
} git_repository_pathid;
/** /**
* Get the normalized path to the working directory of the repository. * Get one of the paths to the repository
*
* Possible values for `id`:
* *
* If the repository is bare, there is no working directory and NULL we be returned. * GIT_REPO_PATH: return the path to the repository
* GIT_REPO_PATH_INDEX: return the path to the index
* GIT_REPO_PATH_ODB: return the path to the ODB
* GIT_REPO_PATH_WORKDIR: return the path to the working
* directory
* *
* @param repo a repository object * @param repo a repository object
* @return NULL if the repository is bare; absolute path to the working directory otherwise. * @param id The ID of the path to return
* @return absolute path of the requested id
*/ */
GIT_EXTERN(const char *) git_repository_workdir(git_repository *repo); GIT_EXTERN(const char *) git_repository_path(git_repository *repo, git_repository_pathid id);
/** /**
* Check if a repository is bare * Check if a repository is bare
......
...@@ -721,16 +721,26 @@ int git_repository_is_empty(git_repository *repo) ...@@ -721,16 +721,26 @@ int git_repository_is_empty(git_repository *repo)
return git_reference_resolve(&branch, head) == GIT_SUCCESS ? 0 : 1; return git_reference_resolve(&branch, head) == GIT_SUCCESS ? 0 : 1;
} }
const char *git_repository_path(git_repository *repo) const char *git_repository_path(git_repository *repo, git_repository_pathid id)
{ {
assert(repo); assert(repo);
return repo->path_repository;
}
const char *git_repository_workdir(git_repository *repo) switch (id) {
{ case GIT_REPO_PATH:
assert(repo); return repo->path_repository;
return repo->path_workdir;
case GIT_REPO_PATH_INDEX:
return repo->path_index;
case GIT_REPO_PATH_ODB:
return repo->path_odb;
case GIT_REPO_PATH_WORKDIR:
return repo->path_workdir;
default:
return NULL;
}
} }
int git_repository_is_bare(git_repository *repo) int git_repository_is_bare(git_repository *repo)
......
...@@ -201,8 +201,8 @@ BEGIN_TEST(open0, "Open a bare repository that has just been initialized by git" ...@@ -201,8 +201,8 @@ BEGIN_TEST(open0, "Open a bare repository that has just been initialized by git"
must_pass(remove_placeholders(TEMP_REPO_FOLDER, "dummy-marker.txt")); must_pass(remove_placeholders(TEMP_REPO_FOLDER, "dummy-marker.txt"));
must_pass(git_repository_open(&repo, TEMP_REPO_FOLDER)); must_pass(git_repository_open(&repo, TEMP_REPO_FOLDER));
must_be_true(git_repository_path(repo) != NULL); must_be_true(git_repository_path(repo, GIT_REPO_PATH) != NULL);
must_be_true(git_repository_workdir(repo) == NULL); must_be_true(git_repository_path(repo, GIT_REPO_PATH_WORKDIR) == NULL);
git_repository_free(repo); git_repository_free(repo);
must_pass(rmdir_recurs(TEMP_REPO_FOLDER)); must_pass(rmdir_recurs(TEMP_REPO_FOLDER));
...@@ -220,8 +220,8 @@ BEGIN_TEST(open1, "Open a standard repository that has just been initialized by ...@@ -220,8 +220,8 @@ BEGIN_TEST(open1, "Open a standard repository that has just been initialized by
must_pass(remove_placeholders(DEST_REPOSITORY_FOLDER, "dummy-marker.txt")); must_pass(remove_placeholders(DEST_REPOSITORY_FOLDER, "dummy-marker.txt"));
must_pass(git_repository_open(&repo, DEST_REPOSITORY_FOLDER)); must_pass(git_repository_open(&repo, DEST_REPOSITORY_FOLDER));
must_be_true(git_repository_path(repo) != NULL); must_be_true(git_repository_path(repo, GIT_REPO_PATH) != NULL);
must_be_true(git_repository_workdir(repo) != NULL); must_be_true(git_repository_path(repo, GIT_REPO_PATH_WORKDIR) != NULL);
git_repository_free(repo); git_repository_free(repo);
must_pass(rmdir_recurs(TEMP_REPO_FOLDER)); must_pass(rmdir_recurs(TEMP_REPO_FOLDER));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment