This teaches the sequencer to invoke the "resolve" strategy with a
function call instead of forking.
Signed-off-by: Alban Gruin <redacted>
---
sequencer.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/sequencer.c b/sequencer.c
index d2332d3e17..ec8e9bda22 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -34,6 +34,7 @@
#include "commit-reach.h"
#include "rebase-interactive.h"
#include "reset.h"
+#include "merge-strategies.h"
#define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION"
@@ -2049,9 +2050,16 @@ static int do_pick_commit(struct repository *r,
commit_list_insert(base, &common);
commit_list_insert(next, &remotes);
- res |= try_merge_command(r, opts->strategy,
- opts->xopts_nr, (const char **)opts->xopts,
- common, oid_to_hex(&head), remotes);
+
+ if (!strcmp(opts->strategy, "resolve")) {
+ repo_read_index(r);
+ res |= merge_strategies_resolve(r, common, oid_to_hex(&head), remotes);
+ } else {
+ res |= try_merge_command(r, opts->strategy,
+ opts->xopts_nr, (const char **)opts->xopts,
+ common, oid_to_hex(&head), remotes);
+ }
+
free_commit_list(common);
free_commit_list(remotes);
}--
2.31.0