On Tue, Nov 24, 2020 at 12:53:02PM +0100, 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 series is based on 306ee63a70 (Eighteenth batch, 2020-09-29). This patch series should be based on top of 722fc37491 (help: do not expect built-in commands to be hardlinked, 2020-10-07) (in v2.29.0-rc1), because without the fix in that commit we don't get the list of available merge strategies when building with SKIP_DASHED_BUILT_INS=YesPlease: $ make clean [...] $ SKIP_DASHED_BUILT_INS=YesPlease make [...] $ git merge -s help Could not find merge strategy 'help'. Available strategies are:. Our completion script relies on this to list available strategies, and a test in 't9902-completion.sh' fails without that fix.