Skip to content

Commit

Permalink
merge-recursive: Remove redundant path clearing for D/F conflicts
Browse files Browse the repository at this point in the history
The code had several places where individual checks were done to remove
files that could be in the way of directories in D/F conflicts.  Not all
D/F conflicts could have a path cleared for them in such a manner, however,
leading to the need to create make_room_for_directories_of_df_conflicts()
as done in the previous patch.  That new function could not have been
incorporated into the code sooner, since not all relevant code paths had
been deferred to process_df_entry() yet, leading to the creation of even
more of these now-redundant path removals.

Clean out all of these extra D/F path clearing cases.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Elijah Newren authored and Junio C Hamano committed Sep 30, 2010
1 parent ef02b31 commit 4c0c181
Showing 1 changed file with 2 additions and 15 deletions.
17 changes: 2 additions & 15 deletions merge-recursive.c
Original file line number Diff line number Diff line change
Expand Up @@ -1032,8 +1032,6 @@ static int process_renames(struct merge_options *o,
branch2,
ren1->dst_entry,
ren2->dst_entry);
remove_file(o, 0, ren1_dst, 0);
/* ren2_dst not in head, so no need to delete */
} else {
remove_file(o, 1, ren1_src, 1);
update_stages_and_entry(ren1_dst,
Expand Down Expand Up @@ -1077,7 +1075,6 @@ static int process_renames(struct merge_options *o,
branch2,
ren1->dst_entry,
NULL);
remove_file(o, 0, ren1_dst, 0);
} else {
clean_merge = 0;
conflict_rename_delete(o, ren1->pair, branch1, branch2);
Expand Down Expand Up @@ -1156,7 +1153,6 @@ static int process_renames(struct merge_options *o,
NULL,
ren1->dst_entry,
NULL);
remove_file(o, 0, ren1_dst, 0);
}
}
}
Expand Down Expand Up @@ -1338,7 +1334,7 @@ static int process_entry(struct merge_options *o,
} else if (string_list_has_string(&o->current_directory_set,
path)) {
entry->processed = 0;
return 1; /* Assume clean till processed */
return 1; /* Assume clean until processed */
} else {
/* Deleted in one and changed in the other */
clean_merge = 0;
Expand All @@ -1362,15 +1358,7 @@ static int process_entry(struct merge_options *o,
if (string_list_has_string(&o->current_directory_set, path)) {
/* Handle D->F conflicts after all subfiles */
entry->processed = 0;
/* But get any file out of the way now, so conflicted
* entries below the directory of the same name can
* be put in the working directory.
*/
if (a_sha)
output(o, 2, "Removing %s", path);
/* do not touch working file if it did not exist */
remove_file(o, 0, path, !a_sha);
return 1; /* Assume clean till processed */
return 1; /* Assume clean until processed */
} else {
output(o, 2, "Adding %s", path);
update_file(o, 1, sha, mode, path);
Expand Down Expand Up @@ -1492,7 +1480,6 @@ static int process_df_entry(struct merge_options *o,
output(o, 1, "CONFLICT (%s): There is a directory with name %s in %s. "
"Adding %s as %s",
conf, path, other_branch, path, new_path);
remove_file(o, 0, path, 0);
update_file(o, 0, sha, mode, new_path);
} else {
output(o, 2, "Adding %s", path);
Expand Down

0 comments on commit 4c0c181

Please sign in to comment.