merge-recursive: honor diff.algorithmad/merge-with-diff-algorithm
commit9c93ba4d0aee1bc8c663a13552afd2b2c22863a9
authorAntonin Delpeuch <antonin@delpeuch.eu>
Sat, 13 Jul 2024 16:51:46 +0000 (13 16:51 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 14 Jul 2024 01:10:49 +0000 (13 18:10 -0700)
treefbbc5fb0bcfd9fdecf3a5eee51fa76bea18225a5
parent557ae147e6cdc9db121269b058c757ac5092f9c9
merge-recursive: honor diff.algorithm

The documentation claims that "recursive defaults to the diff.algorithm
config setting", but this is currently not the case. This fixes it,
ensuring that diff.algorithm is used when -Xdiff-algorithm is not
supplied. This affects the following porcelain commands: "merge",
"rebase", "cherry-pick", "pull", "stash", "log", "am" and "checkout".
It also affects the "merge-tree" ancillary interrogator.

This change refactors the initialization of merge options to introduce
two functions, "init_merge_ui_options" and "init_merge_basic_options"
instead of just one "init_merge_options". This design follows the
approach used in diff.c, providing initialization methods for
porcelain and plumbing commands respectively. Thanks to that, the
"replay" and "merge-recursive" plumbing commands remain unaffected by
diff.algorithm.

Signed-off-by: Antonin Delpeuch <antonin@delpeuch.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 files changed:
builtin/am.c
builtin/checkout.c
builtin/merge-recursive.c
builtin/merge-tree.c
builtin/merge.c
builtin/replay.c
builtin/stash.c
log-tree.c
merge-recursive.c
merge-recursive.h
sequencer.c
t/t7615-diff-algo-with-mergy-operations.sh [new file with mode: 0755]
t/t7615/base.c [new file with mode: 0644]
t/t7615/ours.c [new file with mode: 0644]
t/t7615/theirs.c [new file with mode: 0644]