summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2011-04-09 15:49:44 +0200
committerVicent Marti <tanoku@gmail.com>2011-04-09 15:25:24 -0700
commit4a34b3a9ff796f2324d59eb598595be62934acdf (patch)
tree9612e2c1ae691221c1b1eb56e32730a117412218
parentc6e65acae63bd9b251140184679ab4ea0ec5c1a9 (diff)
downloadlibgit2-4a34b3a9ff796f2324d59eb598595be62934acdf.tar.gz
Add two new accessors to the repository
git_repository_path() and git_repository_workdir() respectively return the path to the git repository and the working directory. Those paths are absolute and normalized.
-rw-r--r--include/git2/repository.h18
-rw-r--r--src/repository.c11
-rw-r--r--tests/t12-repo.c4
3 files changed, 33 insertions, 0 deletions
diff --git a/include/git2/repository.h b/include/git2/repository.h
index 200f350b7..c47fcfc9a 100644
--- a/include/git2/repository.h
+++ b/include/git2/repository.h
@@ -194,6 +194,24 @@ GIT_EXTERN(int) git_repository_init(git_repository **repo_out, const char *path,
*/
GIT_EXTERN(int) git_repository_is_empty(git_repository *repo);
+/**
+ * Get the normalized path to the git repository.
+ *
+ * @param repo a repository object
+ * @return absolute path to the git directory
+ */
+GIT_EXTERN(const char *) git_repository_path(git_repository *repo);
+
+/**
+ * Get the normalized path to the working directory of the repository.
+ *
+ * If the repository is bare, there is no working directory and NULL we be returned.
+ *
+ * @param repo a repository object
+ * @return NULL if the repository is bare; absolute path to the working directory otherwise.
+ */
+GIT_EXTERN(const char *) git_repository_workdir(git_repository *repo);
+
/** @} */
GIT_END_DECL
#endif
diff --git a/src/repository.c b/src/repository.c
index 471c02444..c428b00af 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -488,3 +488,14 @@ int git_repository_is_empty(git_repository *repo)
return git_reference_resolve(&branch, head) == GIT_SUCCESS ? 0 : 1;
}
+const char *git_repository_path(git_repository *repo)
+{
+ assert(repo);
+ return repo->path_repository;
+}
+
+const char *git_repository_workdir(git_repository *repo)
+{
+ assert(repo);
+ return repo->path_workdir;
+}
diff --git a/tests/t12-repo.c b/tests/t12-repo.c
index 876f0c5ea..70dba4255 100644
--- a/tests/t12-repo.c
+++ b/tests/t12-repo.c
@@ -194,6 +194,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(git_repository_open(&repo, TEMP_REPO_FOLDER));
+ must_be_true(git_repository_path(repo) != NULL);
+ must_be_true(git_repository_workdir(repo) == NULL);
git_repository_free(repo);
must_pass(rmdir_recurs(TEMP_REPO_FOLDER));
@@ -211,6 +213,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(git_repository_open(&repo, DEST_REPOSITORY_FOLDER));
+ must_be_true(git_repository_path(repo) != NULL);
+ must_be_true(git_repository_workdir(repo) != NULL);
git_repository_free(repo);
must_pass(rmdir_recurs(TEMP_REPO_FOLDER));