Re: [PATCH] add receive.denyNonFastforwards config variable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, 20 Sep 2006, Junio C Hamano wrote:

> Jeff King <peff@xxxxxxxx> 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

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]