Re: [PATCH] merge-tree: load default git config
From: Derrick Stolee <hidden>
Date: 2023-05-11 15:09:42
On 5/10/2023 4:30 PM, Felipe Contreras wrote:
Derrick Stolee via GitGitGadget wrote:quoted
From: Derrick Stolee <redacted> 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