From: Junio C Hamano Date: Tue, 28 Aug 2012 21:35:03 GMT Subject: Re: [PATCH 5/5] (BROKEN) get_merge_bases_many(): walk from many tips in parallel Message-ID: <7v8vcyzomw.fsf@alter.siamese.dyndns.org> In-Reply-To: <7vipc3q041.fsf@alter.siamese.dyndns.org> Junio C Hamano writes: > Junio C Hamano writes: > >> for (i = 0; i < cnt; i++) { >> - if (rslt[i]) >> + /* >> + * Is rslt[i] an ancestor of any of the others? >> + * then it is not interesting to us. >> + */ >> + for (j = 0; j < i; j++) >> + others[j] = rslt[j]; >> + for (j = 1 + 1; j < cnt; j++) > > s/1 + 1/i + 1/; > > With that, all tests seem to pass ;-) "git merge-base" itself seems to have more room for improvement. Trying to recompute bases for recent 200 merges in the kernel history with the attached script does not show any improvement with or without the series on top of recent "master". Correctnesswise it seems to be OK, though---I get byte-for-byte identical output. -- >8 -- #!/bin/sh git rev-list --committer=torvalds@linux-foundation.org \ --max-parents=2 --min-parents=2 --parents v3.5..v3.6-rc2 >RL cmd=' while read result parent1 parent2 do $GIT merge-base $parent1 $parent2 done :stock GIT=../git.git/git time sh -c "$cmd" >:optim cmp :stock :optim -- 8< --