From: Johannes Schindelin Date: Mon, 15 Dec 2008 11:03:15 GMT Subject: Re: [PATCH] modify/delete conflict resolution overwrites untracked file Message-ID: In-Reply-To: <7vljuhwwtg.fsf@gitster.siamese.dyndns.org> Hi, On Mon, 15 Dec 2008, Junio C Hamano wrote: > Johannes Schindelin writes: > > >> merge-recursive: do not clobber untracked working tree garbage > >> ... > >> +static int would_lose_untracked(const char *path) > >> +{ > >> + int pos = cache_name_pos(path, strlen(path)); > >> + > >> + if (pos < 0) > >> + pos = -1 - pos; > >> + while (pos < active_nr && > >> + !strcmp(path, active_cache[pos]->name)) { > >> + /* > >> + * If stage #0, it is definitely tracked. > >> + * If it has stage #2 then it was tracked > >> + * before this merge started. All other > >> + * cases the path was not tracked. > >> + */ > >> + switch (ce_stage(active_cache[pos])) { > >> + case 0: > >> + case 2: > >> + return 0; > >> + } > >> + pos++; > >> + } > >> + return file_exists(path); > > > > I wonder if it is cheaper to test file_exists() when the index contains a > > lot of files... > > "cheaper" than what? Oops. I meant "cheaper to test file_exists() _first_". But thinking about it again, it is probably way more expensive, especially in the cold cache case. Sorry for the noise, Dscho