]> git.ipfire.org Git - thirdparty/git.git/commit
t6423: add a testcase causing a failed assertion in process_renames
authorDmitry Goncharov <dgoncharov@users.sf.net>
Thu, 6 Mar 2025 15:30:26 +0000 (15:30 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Mar 2025 17:38:20 +0000 (09:38 -0800)
commit98a1a00d53018c7e664644d886466a820aa5e6d7
tree62de7f06ccfff545bdedd29be306c4832dd28256
parente969bc875963a10890d61ba84eab3a460bd9e535
t6423: add a testcase causing a failed assertion in process_renames

If one side of history renames a directory A/ -> B/, and the other side
of history adds new files to A/, then directory rename detection notices
and moves or suggests moving those new files to B/.  A similar thing is
done for paths renamed into A/, causing them to be transitively renamed
into B/.  But, if the file originally came from B/, then this can end up
causing a file to be renamed back to itself.  merge-ort crashes under
this special case, due to a slightly overzealous assertion:

    git: merge-ort.c:3051: process_renames: Assertion `source_deleted || oldinfo->filemask & old_sidemask' failed.
    Aborted (core dumped)

Add a testcase demonstrating this.

Signed-off-by: Dmitry Goncharov <dgoncharov@users.sf.net>
[en: Instead of adding a new testsuite, place it near similar tests in
 t6423, adjusting to match the style of those tests.  Tweak the commit
 message to not repeat the entire testcase, but just describe the bug.
 Also update the line number in the error message.]
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t6423-merge-rename-directories.sh