Skip to content

Commit 80754c5

Browse files
committed
Merge branch 'ds/merge-tree-use-config'
Allow git forges to disable replace-refs feature while running "git merge-tree". * ds/merge-tree-use-config: merge-tree: load default git config
2 parents db13ea8 + b6551fe commit 80754c5

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

builtin/merge-tree.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "merge-blobs.h"
1818
#include "quote.h"
1919
#include "tree.h"
20+
#include "config.h"
2021

2122
static int line_termination = '\n';
2223

@@ -628,6 +629,8 @@ int cmd_merge_tree(int argc, const char **argv, const char *prefix)
628629
if (argc != expected_remaining_argc)
629630
usage_with_options(merge_tree_usage, mt_options);
630631

632+
git_config(git_default_config, NULL);
633+
631634
/* Do the relevant type of merge */
632635
if (o.mode == MODE_REAL)
633636
return real_merge(&o, merge_base, argv[0], argv[1], prefix);

t/t4300-merge-tree.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,4 +334,22 @@ test_expect_success 'turn tree to file' '
334334
test_cmp expect actual
335335
'
336336

337+
test_expect_success 'merge-tree respects core.useReplaceRefs=false' '
338+
test_commit merge-to &&
339+
test_commit valid base &&
340+
git reset --hard HEAD^ &&
341+
test_commit malicious base &&
342+
343+
test_when_finished "git replace -d $(git rev-parse valid^0)" &&
344+
git replace valid^0 malicious^0 &&
345+
346+
tree=$(git -c core.useReplaceRefs=true merge-tree --write-tree merge-to valid) &&
347+
merged=$(git cat-file -p $tree:base) &&
348+
test malicious = $merged &&
349+
350+
tree=$(git -c core.useReplaceRefs=false merge-tree --write-tree merge-to valid) &&
351+
merged=$(git cat-file -p $tree:base) &&
352+
test valid = $merged
353+
'
354+
337355
test_done

0 commit comments

Comments
 (0)