Subject: Re: [PATCH 0/2] finding the fork point from reflog entries

From: Junio C Hamano <[email-masked]>
Date: Thu, 24 Oct 2013 14:20:29 -0700

John Keeping <[email-masked]> writes:

> On Thu, Oct 24, 2013 at 12:11:22PM -0700, Junio C Hamano wrote:
>> The first one is a clean-up of the code to parse command line
>> options to "git merge-base".  Options such as "--independent",
>> "--is-ancestor" and "--octopus" are mutually exclusive and it is
>> better expressed in terms of the recently introduced OPT_CMDMODE.
>> 
>> The second one implements the entire logic of the for loop we see in
>> "git pull --rebase" directly using get_merge_bases_many() and
>> postprocessing the result.
>
> Nice!  I tried this in the case where the target commit happens to be
> the 63rd reflog entry:
>
> $ time sh -c 'for rev in $(git rev-list -g origin/master 2>/dev/null)
> do
>     git merge-base --is-ancestor $rev b2edae0 && break
> done
> '
>
> real    0m3.772s
> user    0m3.338s
> sys     0m0.440s
>
> $ time git merge-base --reflog origin/master b2edae0
>
> real    0m0.156s
> user    0m0.138s
> sys     0m0.018s

The real question is if the C code computes the same as the shell
loop.