From: Konstantin Tokarev Date: Sat, 07 Mar 2020 19:38:36 GMT Subject: Re: Git Merge 2020 slides and reproducibility Message-ID: <3207561583597253@iva2-fa9fd5fad11f.qloud-c.yandex.net> In-Reply-To: 07.03.2020, 19:03, "Elijah Newren" : > On Sat, Mar 7, 2020 at 5:38 AM Konstantin Tokarev wrote: >>  06.03.2020, 18:00, "Elijah Newren" : >>  > Hi, >>  > >>  > Had a few different folks ask me at Git Merge about slides for my >>  > talk. I said I'd post them on github somewhere, but in case you were >>  > one of the folks and have a hard time finding it...they are up at >>  > https://github.com/newren/presentations/blob/pdfs/merge-performance/merge-performance-slides.pdf >>  > and steps to reproduce the speedups I got can be found at >>  > https://github.com/newren/git/blob/git-merge-2020-demo/README.md >>  > (though be forewarned that the code is has lots of fixmes & ifdefs & >>  > other problems, has awful commit messages, etc.; I will be cleaning it >>  > up soon). >> >>  Hello, I've just tried your branch on my repository and it seems like it can >>  be a salvation from all rename-related pain that I'm regularly facing when >>  doing merges and cherry-picks! Thank you very much, I hope it will be >>  integrated into mainline soon. > > Wow, thanks for trying it out. Please note that while it _might_ be > okay to use for real work, I am not that confident that it is. Do not worry, I've made full copy of repo before trying anything. > There > are a number of factors making the 'demo' label I gave it a rather > fitting one: > >   * I only started using it personally on a real world repository (or > two) about a week and a half ago. (Before then, I knew merge-ort > didn't work.) >   * The second real world repo I used it on uncovered a bug in my code > that the testsuite didn't catch[1] >   * Although I've tested with two real world repos now, that testing > was very minimal; I was focused on getting the demo ready and > implementing as many optimizations as I could. >   * While the outer merge, rebase, and cherry-pick commands will > accept a bunch of merge-machinery options and pass them along, > merge-ort flat ignores them all. >   * merge-ort is hardcoded for merge.directoryRenames=true, when the > default should be merge.directoryRenames=conflict directoryRenames=true is actually one of features which I was badly missing and somehow overlooked. >   * it has a bunch of FIXMEs, some of which are code cleanliness > issues but some of which represent minor bugs > > [1] https://lore.kernel.org/git/911de63afa274b0791e4d4252934a5e9b0031f10.1582762465.git.gitgitgadget@gmail.com/ > > Also... > >>  However, when testing my previous merges which had to be done with helper >>  script, I've encountered case of >> >>  CONFLICT (directory rename split) >> >>  Is there any way to prevent conflict in this case if files are the same, and >>  merge their contents if there are differences? I think it would be reasonable >>  to assume that move done in newest commit should win, and allow user >>  to change strategy via command line option, provide explicit hint where files >>  should be moved, or maybe even decide it interactively. > > This conflict message is known to trigger in some cases where it > shouldn't; it may be that you're just experiencing annoyance from > that. Let me fix that issue before worrying about workarounds. Well, in my case a directory of files was moved path A in one of merged heads and to path B in another, so I guess it was legitimate. Are you going to continue development in the same branch? When do you expect it to be ready for review? -- Regards, Konstantin