8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/vcs_toolkit/merge.rb', line 8
def three_way(sequence_one, sequence_two, sequence_three)
diff_one = Diff.from_sequences(sequence_one, sequence_two)
diff_two = Diff.from_sequences(sequence_one, sequence_three)
combined_changes = combine_diffs diff_one, diff_two
merge_changes = combined_changes.flat_map do |line_number, (changeset_one, changeset_two)|
if changeset_one.all?(&:unchanged?)
changeset_two
elsif changeset_two.all?(&:unchanged?)
changeset_one
elsif same_changes(changeset_one, changeset_two)
changeset_one
else
(changeset_one, changeset_two)
end
end
Diff.new merge_changes
end
|