|
|
|
@ -131,17 +131,18 @@ static int update(struct command *cmd)
@@ -131,17 +131,18 @@ static int update(struct command *cmd)
|
|
|
|
|
} |
|
|
|
|
if (deny_non_fast_forwards && !is_null_sha1(old_sha1)) { |
|
|
|
|
struct commit *old_commit, *new_commit; |
|
|
|
|
struct commit_list *bases; |
|
|
|
|
struct commit_list *bases, *ent; |
|
|
|
|
|
|
|
|
|
old_commit = (struct commit *)parse_object(old_sha1); |
|
|
|
|
new_commit = (struct commit *)parse_object(new_sha1); |
|
|
|
|
for (bases = get_merge_bases(old_commit, new_commit, 1); |
|
|
|
|
bases; bases = bases->next) |
|
|
|
|
if (!hashcmp(old_sha1, bases->item->object.sha1)) |
|
|
|
|
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; |
|
|
|
|
if (!bases) |
|
|
|
|
free_commit_list(bases); |
|
|
|
|
if (!ent) |
|
|
|
|
return error("denying non-fast forward;" |
|
|
|
|
" you should pull first"); |
|
|
|
|
" you should pull first"); |
|
|
|
|
} |
|
|
|
|
safe_create_leading_directories(lock_name); |
|
|
|
|
|
|
|
|
|