Browse Source

merge-recursive: Move delete/modify handling into dedicated function

This move is in preparation for the function being called from multiple
places in order to handle D/F conflicts.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Elijah Newren 15 years ago committed by Junio C Hamano
parent
commit
5e3ce663b0
  1. 35
      merge-recursive.c

35
merge-recursive.c

@ -1118,6 +1118,26 @@ error_return:
return ret; return ret;
} }


static void handle_delete_modify(struct merge_options *o,
const char *path,
unsigned char *a_sha, int a_mode,
unsigned char *b_sha, int b_mode)
{
if (!a_sha) {
output(o, 1, "CONFLICT (delete/modify): %s deleted in %s "
"and modified in %s. Version %s of %s left in tree.",
path, o->branch1,
o->branch2, o->branch2, path);
update_file(o, 0, b_sha, b_mode, path);
} else {
output(o, 1, "CONFLICT (delete/modify): %s deleted in %s "
"and modified in %s. Version %s of %s left in tree.",
path, o->branch2,
o->branch1, o->branch1, path);
update_file(o, 0, a_sha, a_mode, path);
}
}

/* Per entry merge function */ /* Per entry merge function */
static int process_entry(struct merge_options *o, static int process_entry(struct merge_options *o,
const char *path, struct stage_data *entry) const char *path, struct stage_data *entry)
@ -1150,19 +1170,8 @@ static int process_entry(struct merge_options *o,
} else { } else {
/* Deleted in one and changed in the other */ /* Deleted in one and changed in the other */
clean_merge = 0; clean_merge = 0;
if (!a_sha) { handle_delete_modify(o, path,
output(o, 1, "CONFLICT (delete/modify): %s deleted in %s " a_sha, a_mode, b_sha, b_mode);
"and modified in %s. Version %s of %s left in tree.",
path, o->branch1,
o->branch2, o->branch2, path);
update_file(o, 0, b_sha, b_mode, path);
} else {
output(o, 1, "CONFLICT (delete/modify): %s deleted in %s "
"and modified in %s. Version %s of %s left in tree.",
path, o->branch2,
o->branch1, o->branch1, path);
update_file(o, 0, a_sha, a_mode, path);
}
} }


} else if ((!o_sha && a_sha && !b_sha) || } else if ((!o_sha && a_sha && !b_sha) ||

Loading…
Cancel
Save