diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-06-27 18:22:02 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-06-30 22:45:51 -0700 |
commit | 6a938648e1454842157b84408acbb6471ec6745f (patch) | |
tree | 0555ba653ff586e06abd2513fa0c53438b1ec733 /object.h | |
parent | 5948e2ae27d936f7737f4d7433ca6c0b879fe4c8 (diff) | |
download | git-6a938648e1454842157b84408acbb6471ec6745f.tar.gz git-6a938648e1454842157b84408acbb6471ec6745f.tar.xz |
Introduce get_merge_bases_many()
This introduces a new function get_merge_bases_many() which is a natural
extension of two commit merge base computation. It is given one commit
(one) and a set of other commits (twos), and computes the merge base of
one and a merge across other commits.
This is mostly useful to figure out the common ancestor when iterating
over heads during an octopus merge. When making an octopus between
commits A, B, C and D, we first merge tree of A and B, and then try to
merge C with it. If we were making pairwise merge, we would be recording
the tree resulting from the merge between A and B as a commit, say M, and
then the next round we will be computing the merge base between M and C.
o---C...*
/ .
o---B...M
/ .
o---o---A
But during an octopus merge, we actually do not create a commit M. In
order to figure out that the common ancestor to use for this merge,
instead of computing the merge base between C and M, we can call
merge_bases_many() with one set to C and twos containing A and B.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object.h')
0 files changed, 0 insertions, 0 deletions