diff options
author | nulltoken <emeric.fermas@gmail.com> | 2012-10-06 14:20:13 +0400 |
---|---|---|
committer | nulltoken <emeric.fermas@gmail.com> | 2012-10-08 02:44:08 +0400 |
commit | 4ba23be1e5bd480d9f6bb3eb212d5a3409fa88bd (patch) | |
tree | 61623069d59525c2dd4c60c9de68573353f7814f /src/branch.c | |
parent | 0c78f685ebeed293c666815b1668b8209f4ff258 (diff) |
branch: deploy git_branch_is_head()
Diffstat (limited to 'src/branch.c')
-rw-r--r-- | src/branch.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/src/branch.c b/src/branch.c index 3cee956f0..6d497b055 100644 --- a/src/branch.c +++ b/src/branch.c @@ -92,7 +92,7 @@ cleanup: int git_branch_delete(git_reference *branch) { - git_reference *head = NULL; + int is_head; assert(branch); @@ -102,27 +102,16 @@ int git_branch_delete(git_reference *branch) return -1; } - if (git_reference_lookup(&head, git_reference_owner(branch), GIT_HEAD_FILE) < 0) { - giterr_set(GITERR_REFERENCE, "Cannot locate HEAD."); - goto on_error; - } + if ((is_head = git_branch_is_head(branch)) < 0) + return is_head; - if ((git_reference_type(head) == GIT_REF_SYMBOLIC) - && (strcmp(git_reference_target(head), git_reference_name(branch)) == 0)) { - giterr_set(GITERR_REFERENCE, - "Cannot delete branch '%s' as it is the current HEAD of the repository.", git_reference_name(branch)); - goto on_error; + if (is_head) { + giterr_set(GITERR_REFERENCE, + "Cannot delete branch '%s' as it is the current HEAD of the repository.", git_reference_name(branch)); + return -1; } - if (git_reference_delete(branch) < 0) - goto on_error; - - git_reference_free(head); - return 0; - -on_error: - git_reference_free(head); - return -1; + return git_reference_delete(branch); } typedef struct { |