summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2016-11-11 13:46:59 +0100
committerPatrick Steinhardt <ps@pks.im>2017-02-13 10:28:15 +0100
commitcb3269c970db6766f8a953fee438b56119fd9847 (patch)
tree2b172c6d0d765edc4d16ddbe953e0ea46c5a8ee3 /include
parentc09fd54e2ecb5d43c281ee0fccef6d95787ec510 (diff)
downloadlibgit2-cb3269c970db6766f8a953fee438b56119fd9847.tar.gz
repository: add function to retrieve paths for repo items
Diffstat (limited to 'include')
-rw-r--r--include/git2/repository.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/git2/repository.h b/include/git2/repository.h
index f60544553..74ce4c795 100644
--- a/include/git2/repository.h
+++ b/include/git2/repository.h
@@ -371,6 +371,42 @@ GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo);
GIT_EXTERN(int) git_repository_is_empty(git_repository *repo);
/**
+ * List of items which belong to the git repository layout
+ */
+typedef enum {
+ GIT_REPOSITORY_ITEM_GITDIR,
+ GIT_REPOSITORY_ITEM_WORKDIR,
+ GIT_REPOSITORY_ITEM_COMMONDIR,
+ GIT_REPOSITORY_ITEM_INDEX,
+ GIT_REPOSITORY_ITEM_OBJECTS,
+ GIT_REPOSITORY_ITEM_REFS,
+ GIT_REPOSITORY_ITEM_PACKED_REFS,
+ GIT_REPOSITORY_ITEM_REMOTES,
+ GIT_REPOSITORY_ITEM_CONFIG,
+ GIT_REPOSITORY_ITEM_INFO,
+ GIT_REPOSITORY_ITEM_HOOKS,
+ GIT_REPOSITORY_ITEM_LOGS,
+ GIT_REPOSITORY_ITEM_MODULES,
+ GIT_REPOSITORY_ITEM_WORKTREES
+} git_repository_item_t;
+
+/**
+ * Get the location of a specific repository file or directory
+ *
+ * This function will retrieve the path of a specific repository
+ * item. It will thereby honor things like the repository's
+ * common directory, gitdir, etc. In case a file path cannot
+ * exist for a given item (e.g. the working directory of a bare
+ * repository), an error is returned.
+ *
+ * @param out Buffer to store the path at
+ * @param repo Repository to get path for
+ * @param item The repository item for which to retrieve the path
+ * @return 0 on success, otherwise a negative value
+ */
+GIT_EXTERN(int) git_repository_item_path(git_buf *out, git_repository *repo, git_repository_item_t item);
+
+/**
* Get the path of this repository
*
* This is the path of the `.git` folder for normal repositories,