From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Martin von Zweigbergk <martinvonz@gmail.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: [RFC] git checkout $tree -- $path always rewrites files
Date: Sat, 8 Nov 2014 03:30:41 -0500 [thread overview]
Message-ID: <20141108083040.GA15833@peff.net> (raw)
In-Reply-To: <CAPc5daWdzrHr8Rdksr3HycMRQu0=Ji7h=BPYjzZj7MH6Ko0VgQ@mail.gmail.com>
On Fri, Nov 07, 2014 at 11:35:59PM -0800, Junio C Hamano wrote:
> I think that has direct linkage; what you have in mind I think is
> http://thread.gmane.org/gmane.comp.version-control.git/234903/focus=234935
Thanks for that link.
I did spend a few hours on this topic earlier today, and got very
confused trying to figure out what the deletion behavior _should_ be,
and whether I was breaking it. For some reason I had zero recollection
of a conversation from last year that I was obviously a major part of. I
think I am getting old. :)
The end of that thread concludes that a diff-based approach is not going
to work, because we need to update the working tree even for files not
mentioned by the diff. I do not think that is a show-stopper, though.
It just means that we need to load the new index as one step (done now
with read_tree_recursive, but ideally using diff), and then walk over
the whole resulting index applying our pathspec again (instead of
relying on CE_UPDATE flags).
This turns out not to be a big deal, because the existing code is
already doing most of that second pathspec application anyway. It does
it because read_tree_recursive is not smart enough to update the "seen"
bits for the pathspec. But now we would have another reason to do it
this way. :)
So just to be clear, the behavior we want is that:
echo foo >some-new-path
git add some-new-path
git checkout HEAD -- .
will delete some-new-path (whereas the current code turns it into an
untracked file). What should:
git checkout HEAD -- some-new-path
do in that case? With the current code, it actually barfs, complaining
that nothing matched some-new-path (because it is not part of HEAD, and
therefore we don't consider it at all), and aborts the whole operation.
I think we would want to delete some-new-path in that case, too.
-Peff
next prev parent reply other threads:[~2014-11-08 8:30 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-07 8:13 [RFC] git checkout $tree -- $path always rewrites files Jeff King
2014-11-07 8:38 ` Jeff King
2014-11-07 10:13 ` Duy Nguyen
2014-11-07 16:51 ` Junio C Hamano
2014-11-07 19:15 ` Jeff King
2014-11-07 17:14 ` Junio C Hamano
2014-11-07 19:17 ` Jeff King
[not found] ` <CANiSa6hufp=80TaesNpo1CxCbwVq3LPXvYaUSbcmzPE5pj_GGw@mail.gmail.com>
2014-11-08 7:10 ` Martin von Zweigbergk
[not found] ` <CAPc5daWdzrHr8Rdksr3HycMRQu0=Ji7h=BPYjzZj7MH6Ko0VgQ@mail.gmail.com>
2014-11-08 8:03 ` Martin von Zweigbergk
2014-11-08 8:30 ` Jeff King [this message]
2014-11-08 8:45 ` Jeff King
2014-11-09 18:37 ` Junio C Hamano
2014-11-08 16:19 ` Martin von Zweigbergk
2014-11-09 9:42 ` Jeff King
2014-11-09 17:21 ` Junio C Hamano
2014-11-13 18:30 ` Jeff King
2014-11-13 19:15 ` Junio C Hamano
2014-11-13 19:26 ` Jeff King
2014-11-13 20:03 ` Jeff King
2014-11-13 21:18 ` Junio C Hamano
2014-11-13 21:37 ` Jeff King
2014-11-14 5:44 ` David Aguilar
2014-11-14 19:27 ` Junio C Hamano
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=20141108083040.GA15833@peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=martinvonz@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.