Subject: Re: understand Diff Formatting --cc flag?

From: Junio C Hamano <[email-masked]>
Date: Wed, 16 Mar 2022 09:04:42 -0700

Andy Zhang <[email-masked]> writes:

> understand Diff Formatting --cc flag?
>
> hi,
>
>   It is really too hard to understand Diff Formatting --cc flag.
>
>   It is hard to understand"...hunks whose contents in the parents have
> only two variants..".
>
>   My question is:
>    1)what does "variant" mean here?

You may be comparing a merge of 5 parents into 1 child.  There are 5
pairwise comparison (parent#1 with the child, parent#2 with the
child, ..., parent#5 with the child).

Among 5 parents, perhaps parent#1 and parent#2 had the same contents,
and parent#4 and parent#5 had the same contents, different from what
parent#1 and parent#3 had.  You have 3 variants (parent#1's, #3's
and #4's; parent#2 has the same contents as #1, parent#5 has the
same contents as #4).

>    2)what about all the other cases? 0 variants, 1 variants, and 3
> variants and even more?

By definition, you wouldn't be making any comparison if there are 0
variants.  1 variant means all the parents are identical, so
whichever parent you are interested in, the difference to the child
is interesting---such a change can only come from the person who
merged adding a change that no parent wanted to have.  If many
parents are different then showing the comparison with the final
resolution from them is useful.  The case that is not so interesting
is when one set of parents had something (call it A), and the other
set of parents had something else (B), and the result is A.  There is
no interesting merge conflict in there.