Re: `git merge --abort` does not run `git rerere clear`
- Date: Tue, 12 Jun 2018 12:52:25 -0700
- From: Junio C Hamano <gitster@xxxxxxxxx>
- Subject: Re: `git merge --abort` does not run `git rerere clear`
Sam Kuper <sam.kuper@xxxxxxxxxxx> writes:
> `man git-rerere` says:
>> Reset the metadata used by rerere if a merge resolution is to be
>> aborted. Calling git am [--skip|--abort] or git rebase
>> [--skip|--abort] will automatically invoke this command.
> It makes sense that `git am [--skip|--abort]` and `git rebase
> [--skip|--abort]` would run `git rerere clear`.
> However, if they run it, then shouldn't `git merge --abort` run it, too?
> If not, then what is the reason why not, and might it be helpful for
> this reason to be mentioned at some appropriate place in the
I do not think there was any reason, other than that those who added
"git merge --abort" weren't as careful as they should have been ;-)
The command is a mere synonym to "git reset --merge"; I am not so
confident that "git reset --merge" should also clear the current
rerere state. If (and this is a big if) "git reset --merge" should,
probably the right place to do so would be remove_branch_state(),
before the function removes merge_rr file. Doing so might allow us
to lose calls to rerere_clear() individual codepaths of various
"abort" implementations make, but that would certainly require
careful thinking to avoid unintended regressions.