Re: [PATCH] add receive.denyNonFastforwards config variable
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Sep 21, 2006, 09:08 UTC
- Message-ID
- <Pine.LNX.4.63.0609211103130.19042@wbgn013.biozentrum.uni-wuerzburg.de>
- In-Reply-To
- <7vbqp9d8j2.fsf@assigned-by-dhcp.cox.net>
Hi,
On Wed, 20 Sep 2006, Junio C Hamano wrote:
Show 22 quoted lines
> Jeff King <peff@peff.net> writes: > > >> X - a - b - c - Y > >> / / > >> o - d - e - f > > > > In your example, git-merge-base X Y returns X. In fact, I could only get > > one merge base out of git-merge-base --all. I tried looking in the tests > > to find a case that produced multiple merge bases, but I was unable to > > find one. Is there an example floating around somewhere? > > There are quite a few in git.git itself. In the recent history, > this counts 42, the answer to everything. > > #!/bin/sh > LF=' > ' > git rev-list --parents master..next | > while read it p1 p2 octo > do > case "$p2" in '') continue ;; esac > mb=`git merge-base --all "$p1" "$p2"`
At this point you should also check if $p2 is in $mb.
> case "$mb" in ?*"$LF"?*) echo "$p1 $p2" : $mb ;; > esac > done
The question was, if there is a fast-forward with more than one merge base, i.e. if the loop we jump^H^H^H^Hdo over bases is necessary.
And no, I am not aware of any such example.
Probably because X would mark all ancestors (_including_ all other possible merge bases) as uninteresting.
Therefore, I am convinced that there is no fast-forward returning more than one merge base. It is technically impossible. And thus, our loop is not necessary, but what the heck.
Ciao, Dscho