merge_bases_many(): split out the logic to paint history
commitda1f515641f4853a6b7c4710392796ed08efaa6f
authorJunio C Hamano <gitster@pobox.com>
Thu, 30 Aug 2012 21:39:03 +0000 (30 14:39 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 31 Aug 2012 00:25:57 +0000 (30 17:25 -0700)
tree869a479c1bcb972f0d81ca622df5174588b67b60
parentb0f9e9eeef0ed4f21fc9bfa92f1314e3112d5cc1
merge_bases_many(): split out the logic to paint history

Introduce a new helper function paint_down_to_common() that takes
the same parameters as merge_bases_many(), but without the first
optimization of not painting anything when "one" is one of the
"twos" (or vice versa), and the last clean-up of removing the common
ancestor that is known to be an ancestor of another common one.

This way, the caller of the new function could tell if "one" is
reachable from any of the "twos" by simply looking at the flag bits
of "one".  If (and only if) it is painted in PARENT2, it is
reachable from one of the "twos".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit.c