diff options
author | Elijah Newren <newren@gmail.com> | 2011-08-11 23:19:54 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-14 14:19:34 -0700 |
commit | 0b30e8125130a78bc7c0e13e7f45ba105bd206b8 (patch) | |
tree | 9559f4cfcff140658d5e2489207344a99446ef21 | |
parent | merge-recursive: Remember to free generated unique path names (diff) | |
download | tgif-0b30e8125130a78bc7c0e13e7f45ba105bd206b8.tar.xz |
merge-recursive: Avoid working directory changes during recursive case
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>
-rw-r--r-- | merge-recursive.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/merge-recursive.c b/merge-recursive.c index f172df1695..e6a6a81ec2 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -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); |