@@ -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);
}