Skip to content

Commit

Permalink
merge-recursive: Avoid working directory changes during recursive case
Browse files Browse the repository at this point in the history
make_room_for_directories_of_df_conflicts() is about making sure necessary
working directory changes can succeed.  When o->call_depth > 0 (i.e. the
recursive case), we do not want to make any working directory changes so
this function should be skipped.

Note that make_room_for_directories_of_df_conflicts() is broken as has
been pointed out by Junio; it should NOT be unlinking files.  What it
should do is keep track of files that could be unlinked if a directory
later needs to be written in their place.  However, that work also is only
relevant in the non-recursive case, so this change is helpful either way.

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 Aug 14, 2011
1 parent 3d6b8e8 commit 0b30e81
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions merge-recursive.c
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,13 @@ static void make_room_for_directories_of_df_conflicts(struct merge_options *o,
int last_len = 0;
int i;

/*
* If we're merging merge-bases, we don't want to bother with
* any working directory changes.
*/
if (o->call_depth)
return;

for (i = 0; i < entries->nr; i++) {
const char *path = entries->items[i].string;
int len = strlen(path);
Expand Down

0 comments on commit 0b30e81

Please sign in to comment.