diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-09-11 11:35:26 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-09-11 11:36:05 -0700 |
commit | 34f5130af84f7a37fba327d5a5be4f4427dc6886 (patch) | |
tree | 1f8836fe7fb70566e31b3f4f5d1475fabd95981b /builtin/receive-pack.c | |
parent | 0083f1d43a7280aefa23656eaac7266139484b24 (diff) | |
parent | f37d3c755209234acfc2ca280027ebdab8e9ea8a (diff) | |
download | git-34f5130af84f7a37fba327d5a5be4f4427dc6886.tar.gz |
Merge branch 'jc/merge-bases'
Optimise the "merge-base" computation a bit, and also update its
users that do not need the full merge-base information to call a
cheaper subset.
* jc/merge-bases:
reduce_heads(): reimplement on top of remove_redundant()
merge-base: "--is-ancestor A B"
get_merge_bases_many(): walk from many tips in parallel
in_merge_bases(): use paint_down_to_common()
merge_bases_many(): split out the logic to paint history
in_merge_bases(): omit unnecessary redundant common ancestor reduction
http-push: use in_merge_bases() for fast-forward check
receive-pack: use in_merge_bases() for fast-forward check
in_merge_bases(): support only one "other" commit
Diffstat (limited to 'builtin/receive-pack.c')
-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 2cb854feb4..9145f1a595 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -480,7 +480,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); @@ -493,12 +492,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"; |