mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 22:25:04 +00:00
repository: Export all internal paths
This commit is contained in:
parent
793545ef2b
commit
602ee38b6e
@ -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
|
||||||
*
|
*
|
||||||
* If the repository is bare, there is no working directory and NULL we be returned.
|
* Possible values for `id`:
|
||||||
|
*
|
||||||
|
* 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)
|
|||||||
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"
|
|||||||
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
|
|||||||
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));
|
||||||
|
Loading…
Reference in New Issue
Block a user