diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-08-27 15:16:38 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-08-27 18:36:39 -0700 |
commit | 5d55915c7a58e59d913b0cfc38a6f49514068cd2 (patch) | |
tree | 3e6e20c39310bb7b2dab95f72fca215c91ecb144 /builtin | |
parent | in_merge_bases(): support only one "other" commit (diff) | |
download | tgif-5d55915c7a58e59d913b0cfc38a6f49514068cd2.tar.xz |
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')
-rw-r--r-- | builtin/receive-pack.c | 8 |
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"; |