git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bo Yang <struggleyb.nku@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, torvalds@linux-foundation.org,
	trast@student.ethz.ch
Subject: Re: [PATCH] Make --follow support --find-copies-harder.
Date: Wed, 21 Apr 2010 12:17:22 +0800	[thread overview]
Message-ID: <h2l41f08ee11004202117nc56510d4y29e39631fdff0923@mail.gmail.com> (raw)
In-Reply-To: <7vtyr5cxnz.fsf@alter.siamese.dyndns.org>

On Wed, Apr 21, 2010 at 11:05 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Because the "--follow" hack was done primarily as a "checkbox" item, and
> also because it is not an option for the "diff" family (it is an option
> for the "log" family), I would personally think that it is actually a bug
> that "git diff" accepts "--follow" and pretends as if it is doing useful
> work, but does so only some of the time.

Ah, sorry for the confusion. I mean, I have found the bug when I use
git log. And take a look at:

git log --follow --find-copies-harder -p t/t4013/diff.show_--first-parent_master

This will report the file  t/t4013/diff.show_--first-parent_master as
a new file but it is copied from t/t4013/diff.show_master indeed.
'--find-copies-harder' should detect this, but it didn't. With this
patch it will find such copy and go on following
t/t4013/diff.show_master history.

And I locate the bug in the format of a diff test case and this cause
the confusion. What I really try to fix is,
1. --follow should support --find-copies-harder when using git-log
2. git-diff should support --find-copies-harder, I mean, diff should
find copies in unmodified files.

For 2, I find the --follow option works for git-diff, so I just take
consideration that it is the right way to support the
--find-copies-harder in git-diff. (and now I don't think so...) ;-)

>    $ git diff --follow --name-status maint master -- builtin/log.c
>    R089        builtin-log.c   builtin/log.c
>    $ git diff --follow --name-status -R maint master -- builtin/log.c
>    D   builtin/log.c
>    $ git diff --follow --name-status master maint -- builtin/log.c
>    D   builtin/log.c
>
> As we can see, it doesn't quite work, and it is not a fault of 750f7b6
> (Finally implement "git log --follow", 2007-06-19) by Linus, exactly
> because the feature wasn't designed to work with "diff" to begin with.

Hmm, really.

> If we were to add a support of "--follow" to "diff" family, I suspect that
> we need to
>
>  (1) make sure we get only one path, just like "log" family does;
>
>  (2) add a logic to notice the reverse situation as demonstrated above and
>     deal with it in a sensible way, without any --find-copies option
>     given by the user.

En, as above. I just want to teach git-diff to find copies among
unmodified files with '--find-copies-harder' option. Maybe, '--follow'
is the good choice to use for control whether git-diff will detect
file move/copy, and '--find-copies-harder' is the option to control
how hard we find the copies.

I will try to make this patch into two, one for fixing the git-log
--follow --find-copies-harder one, and the other try to make a sane
logic for '--follow' for git-diff.

Thanks for your advice!

Regards!
Bo
-- 
My blog: http://blog.morebits.org

  reply	other threads:[~2010-04-21  4:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-20 11:27 [PATCH] Make --follow support --find-copies-harder Bo Yang
2010-04-21  3:05 ` Junio C Hamano
2010-04-21  4:17   ` Bo Yang [this message]
2010-04-21  9:02   ` Bo Yang
2010-04-21  9:24     ` 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=h2l41f08ee11004202117nc56510d4y29e39631fdff0923@mail.gmail.com \
    --to=struggleyb.nku@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=torvalds@linux-foundation.org \
    --cc=trast@student.ethz.ch \
    /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).