rerere: recalculate conflict ID when unresolved conflict is committed
authorThomas Gummerer <t.gummerer@gmail.com>
Sun, 5 Aug 2018 17:20:37 +0000 (18:20 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Aug 2018 20:22:35 +0000 (13:22 -0700)
commitbd7dfa543e0263858071b8648a55ef7ccae1085b
tree48eb73c2e91fdeed8cc586f3fc89c44c41926a80
parent4af32207bc106412a456791037fc4a402101fbb4
rerere: recalculate conflict ID when unresolved conflict is committed

Currently when a user doesn't resolve a conflict, commits the results,
and does an operation which creates another conflict, rerere will use
the ID of the previously unresolved conflict for the new conflict.
This is because the conflict is kept in the MERGE_RR file, which
'rerere' reads every time it is invoked.

After the new conflict is solved, rerere will record the resolution
with the ID of the old conflict.  So in order to replay the conflict,
both merges would have to be re-done, instead of just the last one, in
order for rerere to be able to automatically resolve the conflict.

Instead of that, assign a new conflict ID if there are still conflicts
in a file and the file had conflicts at a previous step.  This ID
matches the conflict we actually resolved at the corresponding step.

Note that there are no backwards compatibility worries here, as rerere
would have failed to even normalize the conflict before this patch
series.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
rerere.c
t/t4200-rerere.sh