summaryrefslogtreecommitdiff
path: root/src/repository.c
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2011-08-08 13:40:17 +0200
committerVicent Marti <tanoku@gmail.com>2011-09-15 01:13:50 +0200
commit3601c4bfce3df04ebfc8668e5db531ded39280a9 (patch)
tree4fa330a2dec46c10f296b6f95838c13dfc11ec9b /src/repository.c
parenta9daa9bc166b1d6f7c8af78d406761c942ab47e4 (diff)
downloadlibgit2-3601c4bfce3df04ebfc8668e5db531ded39280a9.tar.gz
repository: Add git_repository_head()
Diffstat (limited to 'src/repository.c')
-rw-r--r--src/repository.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/repository.c b/src/repository.c
index 1b06c4f03..cbd73fe15 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -729,19 +729,31 @@ int git_repository_head_detached(git_repository *repo)
return 1;
}
-int git_repository_head_orphan(git_repository *repo)
+int git_repository_head(git_reference **head_out, git_repository *repo)
{
git_reference *ref;
int error;
+ *head_out = NULL;
+
error = git_reference_lookup(&ref, repo, GIT_HEAD_FILE);
if (error < GIT_SUCCESS)
- return error;
-
- if (git_reference_type(ref) == GIT_REF_OID)
- return 0;
+ return git__rethrow(GIT_ENOTAREPO, "Failed to locate the HEAD");
error = git_reference_resolve(&ref, ref);
+ if (error < GIT_SUCCESS)
+ return git__rethrow(error, "Failed to resolve the HEAD");
+
+ *head_out = ref;
+ return GIT_SUCCESS;
+}
+
+int git_repository_head_orphan(git_repository *repo)
+{
+ git_reference *ref;
+ int error;
+
+ error = git_repository_head(&ref, repo);
return error == GIT_ENOTFOUND ? 1 : error;
}