On Tue, Jul 22, 2025 at 03:23:05PM +0000, Elijah Newren via GitGitGadget wrote: > At GitHub, we've got a real-world repository that has been triggering > failures of the form: > > git: merge-ort.c:3007: process_renames: Assertion `newinfo && !newinfo->merged.clean' failed. > > > Digging in, this particular corner case requires multiple things to trigger: > (1) a rename/delete of one file, and (2) a directory rename modifying an > unrelated rename such that this unrelated rename's target becomes the source > of the rename/delete from (1). > > Unfortunately, looking around, it's not the only bug in the area. Plus, some > of our testcases in tangential situations were not checked closely enough or > were weird or buggy in various ways. Adding to the challenge was the fact > that the relevant renames optimization was sometimes triggering making > renames look like delete-and-add, and overlooking this meant I sometimes > wasn't triggering what I thought I was triggering. > > The combination of challenges sometimes made me think my fixes were breaking > things when sometimes I was just unaware of other bugs. I went in circles a > few times and took a rather non-linear path to finding and fixing these > issues. While I think I've turned it into a nice linear progression of > patches, I might be a bit too deep in the mud and it might not be as linear > or clear as I think. Let me know and I'll try to clarify anything needed. I had a read through this whole series and it looks plausible to me. I won't claim to fully understand it though given that I don't have a lot of experience with the whole merge machinery. Patrick