From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [RFC] use typechange as rename source
Date: Fri, 30 Nov 2007 23:34:07 -0500 [thread overview]
Message-ID: <20071201043407.GD30725@coredump.intra.peff.net> (raw)
In-Reply-To: <7vsl2n87jr.fsf@gitster.siamese.dyndns.org>
On Fri, Nov 30, 2007 at 06:36:56PM -0800, Junio C Hamano wrote:
> > I have always been a bit confused about diffcore-break, so I am probably
> > misunderstanding what you mean. But are you saying that
> > diffcore-break.c:should_break should return 1 for typechanges?
>
> What I had in mind was to do something like that in spirit, but instead
> break such a filepair inside diffcore-rename (iow, even when the user
> did not say -B) early on.
Ah, I see. BTW, I totally screwed up the tests I did earlier. Returning
1 from should_break _does_ produce the same results for my simple case
(copy + typechange).
> But after re-reading your patch and the surrounding code, that is
> more or less what you are doing (without actually recording the extra
> broken pair to be merged back later).
I don't think we need to, because they are never actually "broken"; we
simply consider the source a candidate for renaming, but keep the pair
together to note the typechange.
> which is essentially doing the same thing but only for the "remove the
> regular file" half. One has to wonder how the lack of handling the
> other half affects the outcome and still produce a result more intuitive
> than the current code.
AIUI, because we never broke the pair in the first place, we don't need
to look for a source for that dest (the "add a new symlink" half). It's
already part of the same filepair.
Whether this is by design or simply a happy accident that we record both
renames and typechanges in diff_filepairs, I'm not sure. Or perhaps I'm
totally misunderstanding how the breaking works.
> In your test case, the "new" symlink won't have any similar symlink that
> is removed from the preimage, so registering it as a rename destination
> would not make a difference (it will say "no match found, so create this
> as usual"), but I am not convinced if that would work well in general.
I don't know that it makes a difference. We are impacting only a
'typechange', which implies that we have a filepair in which both p->one
and p->two are valid; thus, the current code doesn't use it as a rename
dst at all.
-Peff
next prev parent reply other threads:[~2007-12-01 4:34 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-21 17:12 [RFC] use typechange as rename source Jeff King
2007-11-29 0:02 ` Junio C Hamano
2007-11-29 14:14 ` Jeff King
2007-11-30 1:10 ` Junio C Hamano
2007-11-30 1:57 ` Jeff King
2007-12-01 2:36 ` Junio C Hamano
2007-12-01 4:34 ` Jeff King [this message]
2007-12-01 6:08 ` Junio C Hamano
2007-12-01 6:13 ` Junio C Hamano
2007-12-01 6:35 ` Junio C Hamano
2007-12-01 6:49 ` Jeff King
2007-12-02 19:15 ` Junio C Hamano
2007-12-03 1:20 ` Jeff King
2007-12-01 6:17 ` Jeff King
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=20071201043407.GD30725@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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.