Re: [BUG?] assertion failure when merging branches
On Mon, Dec 27, 2021 at 10:35 AM Ralf Thielow <ralf.thielow@gmail.com> wrote:
Show 24 quoted lines
>
> Hi,
>
> At $WORK I tried to merge two branches and ran into an assertion
> failure. I exported the two branches down to the merge base as
> an anonymous repo, so that it can be reproduced.
>
> In the branch I tried to merge into, files have been moved
> and/or reformatted.
>
> My Git version is 2.34.1.
>
> wget https://gist.github.com/ralfth/5b624abb0a99e3e705a0984c4b2d253e/raw/7f7ef5b10711550b90342c50b53ce25c19075c97/repo.txt
> mkdir tmp
> cd tmp
> git init
> cat ../repo.txt | git fast-import
> git checkout ref0/ref1
> git config merge.renormalize true
> git merge ref2/ref0/ref3
>
> git: merge-ort.c:3846: process_entry: Assertion `!ci->df_conflict &&
> !ci->path_conflict' failed.
> Aborted (core dumped)
Yikes, sorry about this renormalization bug in merge-ort. For now, you can recover via:
$ rm .git/index.lock
$ rm .git/MERGE_*
and then as a workaround you can either use the old merge backend for now:
$ git config pull.twohead recursive
or continue using the new merge backend and just turn off merge.renormalize. After that, a subsequent `git merge ref2/ref0/ref3` should work for you.
As for the bug, I introduced this in commit a492d5331c ("merge-ort: ensure we consult df_conflict and path_conflicts", 2021-06-30), and before that commit, this type of setup would be mis-merged (with a rename/delete conflict getting ignored). I'll submit a patch with a smaller testcase soon.