@@ -658,13 +658,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_unmerged_index_entries(struct merge_options *opt,
+ struct index_state *index,
+ struct strmap *paths,
+ struct strmap *unmerged)
+{
+ if (strmap_empty(unmerged))
+ 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_unmerged_index_entries(opt, opt->repo->index,
+ &opti->paths,
+ &opti->unmerged)) {
+ /* failure to function */
+ result->clean = -1;
+ return;
+ }
+ }
+
+ if (display_update_msgs) {
+ /* TODO: print out CONFLICT and other informational messages. */
+ }
+
merge_finalize(opt, result);
}
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> --- merge-ort.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-)