mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-21 22:21:37 +00:00
repository: Add git_repository_head()
This commit is contained in:
parent
a9daa9bc16
commit
3601c4bfce
@ -218,6 +218,16 @@ GIT_EXTERN(void) git_repository_free(git_repository *repo);
|
|||||||
*/
|
*/
|
||||||
GIT_EXTERN(int) git_repository_init(git_repository **repo_out, const char *path, unsigned is_bare);
|
GIT_EXTERN(int) git_repository_init(git_repository **repo_out, const char *path, unsigned is_bare);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve and resolve the reference pointed at by HEAD.
|
||||||
|
*
|
||||||
|
* @param head_out pointer to the reference which will be retrieved
|
||||||
|
* @param repo a repository object
|
||||||
|
*
|
||||||
|
* @return 0 on success; error code otherwise
|
||||||
|
*/
|
||||||
|
GIT_EXTERN(int) git_repository_head(git_reference **head_out, git_repository *repo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a repository's HEAD is detached
|
* Check if a repository's HEAD is detached
|
||||||
*
|
*
|
||||||
|
@ -729,19 +729,31 @@ int git_repository_head_detached(git_repository *repo)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 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)
|
int git_repository_head_orphan(git_repository *repo)
|
||||||
{
|
{
|
||||||
git_reference *ref;
|
git_reference *ref;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
error = git_reference_lookup(&ref, repo, GIT_HEAD_FILE);
|
error = git_repository_head(&ref, repo);
|
||||||
if (error < GIT_SUCCESS)
|
|
||||||
return error;
|
|
||||||
|
|
||||||
if (git_reference_type(ref) == GIT_REF_OID)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error = git_reference_resolve(&ref, ref);
|
|
||||||
|
|
||||||
return error == GIT_ENOTFOUND ? 1 : error;
|
return error == GIT_ENOTFOUND ? 1 : error;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user