Re: [PATCH v6 00/13] Rewrite the remaining merge strategies from shell to C
From: Derrick Stolee <hidden>
Date: 2021-01-05 16:50:56
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