summaryrefslogtreecommitdiff
path: root/builtin/receive-pack.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-08-27 15:16:38 -0700
committerJunio C Hamano <gitster@pobox.com>2012-08-27 18:36:39 -0700
commit5d55915c7a58e59d913b0cfc38a6f49514068cd2 (patch)
tree3e6e20c39310bb7b2dab95f72fca215c91ecb144 /builtin/receive-pack.c
parenta20efee9cfcf9c68bb01d0aa82ffc7903d88bab4 (diff)
downloadgit-5d55915c7a58e59d913b0cfc38a6f49514068cd2.tar.gz
receive-pack: use in_merge_bases() for fast-forward check
The original computed merge-base between the old commit and the new commit and checked if the old commit was a merge base between them, in order to make sure we are fast-forwarding. Instead, call in_merge_bases(old, new) which does the same. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/receive-pack.c')
-rw-r--r--builtin/receive-pack.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 0afb8b2896..58f3a37a39 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -478,7 +478,6 @@ static const char *update(struct command *cmd)
!prefixcmp(name, "refs/heads/")) {
struct object *old_object, *new_object;
struct commit *old_commit, *new_commit;
- struct commit_list *bases, *ent;
old_object = parse_object(old_sha1);
new_object = parse_object(new_sha1);
@@ -491,12 +490,7 @@ static const char *update(struct command *cmd)
}
old_commit = (struct commit *)old_object;
new_commit = (struct commit *)new_object;
- bases = get_merge_bases(old_commit, new_commit, 1);
- for (ent = bases; ent; ent = ent->next)
- if (!hashcmp(old_sha1, ent->item->object.sha1))
- break;
- free_commit_list(bases);
- if (!ent) {
+ if (!in_merge_bases(old_commit, new_commit)) {
rp_error("denying non-fast-forward %s"
" (you should pull first)", name);
return "non-fast-forward";