summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Elijah Newren <newren@gmail.com>2011-08-11 23:19:54 -0600
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-08-14 14:19:34 -0700
commit0b30e8125130a78bc7c0e13e7f45ba105bd206b8 (patch)
tree9559f4cfcff140658d5e2489207344a99446ef21
parentmerge-recursive: Remember to free generated unique path names (diff)
downloadtgif-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.c7
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);