From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Clemens Buchacher <drizzd@aon.at>, git@vger.kernel.org
Subject: Re: [PATCH] modify/delete conflict resolution overwrites untracked file
Date: Mon, 15 Dec 2008 02:35:07 -0800 [thread overview]
Message-ID: <7vljuhwwtg.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: alpine.DEB.1.00.0812151032230.14632@racer
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?
The test with the index is not about efficiency, but is all about
correctness.
If the file in the work tree came from the index that represents "our"
branch, we do not want to say "yes" from this function, even when
(actually, "especially when") the path exists in the work tree.
unpack-trees decided that the path matches the index (otherwise you are
already guaranteeing that we wouldn't have come this far, right?) and we
are about to write out the (potentially partial) merge result to the
working tree file.
next prev parent reply other threads:[~2008-12-15 10:36 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-10 20:12 [PATCH] modify/delete conflict resolution overwrites untracked file Clemens Buchacher
2008-12-10 20:51 ` Junio C Hamano
2008-12-10 21:11 ` Clemens Buchacher
2008-12-10 23:36 ` Junio C Hamano
2008-12-11 8:07 ` Clemens Buchacher
2008-12-11 8:13 ` Junio C Hamano
2008-12-15 0:46 ` Clemens Buchacher
2008-12-15 1:03 ` Junio C Hamano
2008-12-15 3:34 ` Junio C Hamano
2008-12-15 9:34 ` Johannes Schindelin
2008-12-15 10:35 ` Junio C Hamano [this message]
2008-12-15 11:03 ` Johannes Schindelin
2008-12-15 9:59 ` Clemens Buchacher
2008-12-15 10:22 ` Junio C Hamano
2008-12-15 10:50 ` Mike Ralphson
2008-12-15 11:09 ` Johannes Schindelin
2008-12-15 11:45 ` Mike Ralphson
2008-12-15 22:13 ` Junio C Hamano
2008-12-15 23:02 ` Clemens Buchacher
2008-12-16 0:16 ` Junio C Hamano
2008-12-16 1:09 ` Jakub Narebski
2008-12-28 11:44 ` Clemens Buchacher
2008-12-28 22:21 ` Junio C Hamano
2008-12-28 23:53 ` Clemens Buchacher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vljuhwwtg.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=drizzd@aon.at \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).