Re: [PATCH] add receive.denyNonFastforwards config variable
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:41
Johannes Schindelin [off-list ref] writes:
On Wed, 20 Sep 2006, Junio C Hamano wrote:quoted
Johannes Schindelin [off-list ref] writes:quoted
No longer barfs on new refs, and tries all merge bases (even if I cannot come up with any scenario where there is more than one merge base in the case of a fast forward).Hmm. If that is the case (and I think it is although I haven't come up with a proof),From git-fetch.sh: # Require fast-forward. mb=$(git-merge-base "$local" "$2") && ... So we indeed assumed that git-merge-base returns the old commit in the case of a fast-forward (git-merge-base returns just the first item of the result of get_merge_bases()).
I think this was leftover from the days we naïvely assumed that multiple bases does not matter, and probably needs updating.
Note that I have no proof that this assumption is true. It might be wrong
in this case:
X - a - b - c - Y
/ /
o - d - e - f
where X is the old commit, and Y is the new commit. But I am too tired to
test it right now.