On 5/10/2023 4:30 PM, Felipe Contreras wrote: > Derrick Stolee via GitGitGadget wrote: >> From: Derrick Stolee <derrickstolee@xxxxxxxxxx> >> >> The 'git merge-tree' command handles creating root trees for merges >> without using the worktree. This is a critical operation in many Git >> hosts, as they typically store bare repositories. >> >> This builtin does not load the default Git config, which can have >> several important ramifications. > > For the record, I had already sent a better version of this patch almost 2 > years ago [1], not just for `git merge-tree`, but other commands as well. > > The obvious fix was completely ignored by the maintainer. > > The reason why it should be git_xmerge_config and not git_default_config, is > that merge.conflictstyle would not be parsed if you call git_default_config. As mentioned by Elijah in a different thread, the merge machinery loads the merge config as needed. I confirmed by creating this test, which I may submit as an independent patch: test_expect_success 'merge-tree respects merge.conflictstyle' ' test_commit conflict-base && for branch in left right do git checkout -b $branch conflict-base && echo $branch >>conflict-base.t && git add conflict-base.t && git commit -m $branch || return 1 done && test_must_fail git merge-tree left right >out1 && test_must_fail git -c merge.conflictstyle=diff3 merge-tree left right >out2 && tree1=$(head -n 1 out1) && tree2=$(head -n 1 out2) && git cat-file -p $tree1:conflict-base.t >conflict1 && git cat-file -p $tree2:conflict-base.t >conflict2 && ! test_cmp conflict1 conflict2 && ! grep "||||||" conflict1 && grep "||||||" conflict2 ' Thus we do not need to use git_xmerge_config at this point in the process. Thanks, -Stolee