[PATCHv2 21/56] merge-recursive: Avoid working directory changes during recursive case
- From
Elijah Newren <newren@gmail.com>
- Date
- Aug 12, 2011, 05:19 UTC
- Message-ID
- <1313126429-17368-22-git-send-email-newren@gmail.com>
- In-Reply-To
- <1313126429-17368-1-git-send-email-newren@gmail.com>
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> --- No changes since v1.
merge-recursive.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/merge-recursive.c b/merge-recursive.c index b5a8f17..8863b02 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -355,6 +355,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);
-- 1.7.6.100.gac5c1