Re: [PATCH] modify/delete conflict resolution overwrites untracked file
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 15, 2008, 11:03 UTC
- Message-ID
- <alpine.DEB.1.00.0812151201300.30933@intel-tinevez-2-302>
- In-Reply-To
- <7vljuhwwtg.fsf@gitster.siamese.dyndns.org>
Hi,
On Mon, 15 Dec 2008, Junio C Hamano wrote:
Show 31 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> 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