On 11/24/2020 6:53 AM, Alban Gruin wrote: > In a effort to reduce the number of shell scripts in git's codebase, I > propose this patch series converting the two remaining merge strategies, > resolve and octopus, from shell to C. This will enable slightly better > performance, better integration with git itself (no more forking to > perform these operations), better portability (Windows and shell scripts > don't mix well). > > Three scripts are actually converted: first git-merge-one-file.sh, then > git-merge-resolve.sh, and finally git-merge-octopus.sh. Not only they > are converted, but they also are modified to operate without forking, > and then libified so they can be used by git without spawning another > process. This is a worthwhile effort. Of course, I wasn't familiar with this area and only took interest when I started working in a conflicting area. I did my best in reviewing the content here. I did not comment further on the patches where Junio already gave extensive review. > This series keeps the commands `git merge-one-file', `git > merge-resolve', and `git merge-octopus', so any script depending on them > should keep working without any changes. I pointed out some questions about the "dashed versus non-dashed" forms. > This series is based on 306ee63a70 (Eighteenth batch, 2020-09-29). The > tip is tagged as "rewrite-merge-strategies-v6" at > https://github.com/agrn/git. Please also base onto 722fc37491 (help: do not expect built-in commands to be hardlinked, 2020-10-07) as requested by Szeder. Thanks, -Stolee