]> git.ipfire.org Git - thirdparty/git.git/commitdiff
merge-ort: basic outline for merge_switch_to_result()
authorElijah Newren <newren@gmail.com>
Sun, 13 Dec 2020 08:04:23 +0000 (08:04 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 13 Dec 2020 22:18:20 +0000 (14:18 -0800)
This adds a basic implementation for merge_switch_to_result(), though
just in terms of a few new empty functions that will be defined in
subsequent commits.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
merge-ort.c

index a7b0df8cb08a3202181434aedacea258affbc0fc..ee7fbe714046ff431893716258858d2fb3ce1494 100644 (file)
@@ -971,13 +971,53 @@ static void process_entries(struct merge_options *opt,
        string_list_clear(&dir_metadata.offsets, 0);
 }
 
+static int checkout(struct merge_options *opt,
+                   struct tree *prev,
+                   struct tree *next)
+{
+       die("Not yet implemented.");
+}
+
+static int record_conflicted_index_entries(struct merge_options *opt,
+                                          struct index_state *index,
+                                          struct strmap *paths,
+                                          struct strmap *conflicted)
+{
+       if (strmap_empty(conflicted))
+               return 0;
+
+       die("Not yet implemented.");
+}
+
 void merge_switch_to_result(struct merge_options *opt,
                            struct tree *head,
                            struct merge_result *result,
                            int update_worktree_and_index,
                            int display_update_msgs)
 {
-       die("Not yet implemented");
+       assert(opt->priv == NULL);
+       if (result->clean >= 0 && update_worktree_and_index) {
+               struct merge_options_internal *opti = result->priv;
+
+               if (checkout(opt, head, result->tree)) {
+                       /* failure to function */
+                       result->clean = -1;
+                       return;
+               }
+
+               if (record_conflicted_index_entries(opt, opt->repo->index,
+                                                   &opti->paths,
+                                                   &opti->conflicted)) {
+                       /* failure to function */
+                       result->clean = -1;
+                       return;
+               }
+       }
+
+       if (display_update_msgs) {
+               /* TODO: print out CONFLICT and other informational messages. */
+       }
+
        merge_finalize(opt, result);
 }