07.03.2020, 19:03, "Elijah Newren" <newren@xxxxxxxxx>: > On Sat, Mar 7, 2020 at 5:38 AM Konstantin Tokarev <annulen@xxxxxxxxx> wrote: >> 06.03.2020, 18:00, "Elijah Newren" <newren@xxxxxxxxx>: >> > 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@xxxxxxxxx/ > > 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