I'm interested in knowing how revision-control systems do merging.
Suppose you have a file A. On one branch, file A is modified - call it file B. On another branch, file A is modified - call it file C:
B
/
A
\
C
When the second branch is merged into the first branch, I understand that a 3-way merge is performed between B, C, and their parent A. The result is file D on the first branch:
B--D
/
A
\
C
Now what I don't understand is what happens after another iteration. D is modified, becoming E, and C is modified, becoming F:
B--D--E
/
A
\
C--F
If we want to do another merge from the second branch to the first, what are the 3 files involved in the 3-way merge?