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>
This commit is contained in:
Junio C Hamano 2012-08-27 15:16:38 -07:00
Родитель a20efee9cf
Коммит 5d55915c7a
1 изменённых файлов: 1 добавлений и 7 удалений

Просмотреть файл

@ -478,7 +478,6 @@ static const char *update(struct command *cmd)
!prefixcmp(name, "refs/heads/")) { !prefixcmp(name, "refs/heads/")) {
struct object *old_object, *new_object; struct object *old_object, *new_object;
struct commit *old_commit, *new_commit; struct commit *old_commit, *new_commit;
struct commit_list *bases, *ent;
old_object = parse_object(old_sha1); old_object = parse_object(old_sha1);
new_object = parse_object(new_sha1); new_object = parse_object(new_sha1);
@ -491,12 +490,7 @@ static const char *update(struct command *cmd)
} }
old_commit = (struct commit *)old_object; old_commit = (struct commit *)old_object;
new_commit = (struct commit *)new_object; new_commit = (struct commit *)new_object;
bases = get_merge_bases(old_commit, new_commit, 1); if (!in_merge_bases(old_commit, new_commit)) {
for (ent = bases; ent; ent = ent->next)
if (!hashcmp(old_sha1, ent->item->object.sha1))
break;
free_commit_list(bases);
if (!ent) {
rp_error("denying non-fast-forward %s" rp_error("denying non-fast-forward %s"
" (you should pull first)", name); " (you should pull first)", name);
return "non-fast-forward"; return "non-fast-forward";