diff options
author | Elijah Newren <newren@gmail.com> | 2010-09-20 02:28:50 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-09-29 17:32:38 -0700 |
commit | 6ef2cb008f132e4649ef925a8e1950d3138054d5 (patch) | |
tree | caff30b74c5a7b66ea094afd6d50b5cdffb03ae0 | |
parent | merge-recursive: Nuke rename/directory conflict detection (diff) | |
download | tgif-6ef2cb008f132e4649ef925a8e1950d3138054d5.tar.xz |
merge-recursive: Move rename/delete handling into dedicated function
This move is in preparation for the function growing and 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>
-rw-r--r-- | merge-recursive.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/merge-recursive.c b/merge-recursive.c index 9fde5a6f75..c8ac6aebcb 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -730,6 +730,25 @@ static struct merge_file_info merge_file(struct merge_options *o, return result; } +static void conflict_rename_delete(struct merge_options *o, + struct diff_filepair *pair, + const char *rename_branch, + const char *other_branch) +{ + char *dest_name = pair->two->path; + + output(o, 1, "CONFLICT (rename/delete): Rename %s->%s in %s " + "and deleted in %s", + pair->one->path, pair->two->path, rename_branch, + other_branch); + if (!o->call_depth) + update_stages(dest_name, NULL, + rename_branch == o->branch1 ? pair->two : NULL, + rename_branch == o->branch1 ? NULL : pair->two, + 1); + update_file(o, 0, pair->two->sha1, pair->two->mode, dest_name); +} + static void conflict_rename_rename_1to2(struct merge_options *o, struct rename *ren1, const char *branch1, @@ -936,17 +955,7 @@ static int process_renames(struct merge_options *o, if (sha_eq(src_other.sha1, null_sha1)) { clean_merge = 0; - output(o, 1, "CONFLICT (rename/delete): Rename %s->%s in %s " - "and deleted in %s", - ren1_src, ren1_dst, branch1, - branch2); - update_file(o, 0, ren1->pair->two->sha1, ren1->pair->two->mode, ren1_dst); - if (!o->call_depth) - update_stages(ren1_dst, NULL, - branch1 == o->branch1 ? - ren1->pair->two : NULL, - branch1 == o->branch1 ? - NULL : ren1->pair->two, 1); + conflict_rename_delete(o, ren1->pair, branch1, branch2); } else if ((dst_other.mode == ren1->pair->two->mode) && sha_eq(dst_other.sha1, ren1->pair->two->sha1)) { /* Added file on the other side |