Subject: Re: Edit a rerere conflict resolution

From: Vincent van Ravesteijn <[email-masked]>
Date: Mon, 12 Mar 2012 22:21:09 +0100

Op 12-3-2012 21:34, Junio C Hamano schreef:
> Vincent van Ravesteijn<[email-masked]>  writes:
>
>> Op 12-3-2012 21:01, Junio C Hamano schreef:
>> ...
>>> I haven't find it necessary in practice, as the re-fix for me
>>> typically would go like this:
>>>
>>>       $ git merge other-branch
>>>       ... rerere kicks in; eyeball the results
>>>       ... ah, my earlier resolution is no longer correct
>>>       $ edit $the_path
>>>       ... test the result of manual edit in the context of the merged whole
>>>       ... and be satisified
>>>       $ git rerere forget $the_path
>>>       $ git add $the_path
>>>       $ git commit
>>>       ... rerere records the updated resolution
>>>
>>> What scenario do you have in mind that you would need to re-fix more
>>> resolution than you need?

Here I was mistaken. I assumed that you could run 'git rerere forget' 
always and thus removing all conflict resolutions for a certain path. 
Now I see that the documentation clearly says "current conflict in 
<pathspec>"

> The problem I have with "rerere edit" is it is an offline process,
> and to validate that the update is correct, I would have to have the
> problematic merge in my working tree once _anyway_.  And at that
> point, updating the target file in the working tree and recording
> the updated resolution using the usual "git rerere" feels a more
> natural way to do so, and more importantly, it is a more convenient
> way to do the "update and validate".  On the other hand, "rerere
> edit" is a more convenient way to "update but not validate the
> result".

This last part probably makes the difference indeed. In my case the 
merge resolution was very very easy (the conflicting hunks have 
fileformat version numbers), but it is a bit annoying and it requires 
some 'vim'-skills to redo the merge conflict just to correct a newline 
somewhere, or a missing ','.

As I wrote, the merge resolutions in my case were very easy (logically), 
but just annoying (motorically).
These could even be resolved by some merge-conflict hook.

Examples:
- for this file we know the conflict always has to be resolved by adding 
the oldest hunk before the newest hunk. For example, new file formats 
will be added sequentially to a file.
- for this file we can resolve it anyway we want. For example, a release 
notes file which just enumerates all changes in random order.

Anyway, has anyone thought about such a hook ?

Vincent