path: root/http-push.c
diff options
authorJunio C Hamano <>2011-10-14 02:03:19 (GMT)
committerJunio C Hamano <>2011-10-14 02:03:19 (GMT)
commit0fd8cb3fec7abb36505a150fe5cfa9b1d8b85496 (patch)
treee8ff37c5dce1e0eb7e33da89d487fcb21bbec6c0 /http-push.c
parent6fdab32e14e2bca05ae6471502bcdfd35b381564 (diff)
parentbaf18fc261ca475343fe3cb9cd2c0dded4bc1bb7 (diff)
Merge branch 'nd/maint-autofix-tag-in-head'
* nd/maint-autofix-tag-in-head: Accept tags in HEAD or MERGE_HEAD merge: remove global variable head[] merge: use return value of resolve_ref() to determine if HEAD is invalid merge: keep stash[] a local variable Conflicts: builtin/merge.c
Diffstat (limited to 'http-push.c')
1 files changed, 4 insertions, 4 deletions
diff --git a/http-push.c b/http-push.c
index 376331a..44f814c 100644
--- a/http-push.c
+++ b/http-push.c
@@ -1606,10 +1606,10 @@ static void fetch_symref(const char *path, char **symref, unsigned char *sha1)
-static int verify_merge_base(unsigned char *head_sha1, unsigned char *branch_sha1)
+static int verify_merge_base(unsigned char *head_sha1, struct ref *remote)
- struct commit *head = lookup_commit(head_sha1);
- struct commit *branch = lookup_commit(branch_sha1);
+ struct commit *head = lookup_commit_or_die(head_sha1, "HEAD");
+ struct commit *branch = lookup_commit_or_die(remote->old_sha1, remote->name);
struct commit_list *merge_bases = get_merge_bases(head, branch, 1);
return (merge_bases && !merge_bases->next && merge_bases->item == branch);
@@ -1680,7 +1680,7 @@ static int delete_remote_branch(const char *pattern, int force)
return error("Remote branch %s resolves to object %s\nwhich does not exist locally, perhaps you need to fetch?", remote_ref->name, sha1_to_hex(remote_ref->old_sha1));
/* Remote branch must be an ancestor of remote HEAD */
- if (!verify_merge_base(head_sha1, remote_ref->old_sha1)) {
+ if (!verify_merge_base(head_sha1, remote_ref)) {
return error("The branch '%s' is not an ancestor "
"of your current HEAD.\n"
"If you are sure you want to delete it,"