git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Make --follow support --find-copies-harder.

From
Bo Yang <struggleyb.nku@gmail.com>
Date
Apr 21, 2010, 04:17 UTC
Message-ID
<h2l41f08ee11004202117nc56510d4y29e39631fdff0923@mail.gmail.com>
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:
Show 5 quoted lines
> 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...) ;-)

Show 10 quoted lines
>    $ 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.
Show 8 quoted lines
> 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
Previous: Junio C HamanoNext: Bo Yang
Message 3 of 5 in “Make --follow support --find-copies-harder.”
  1. Make --follow support --find-copies-harder.Bo Yang, Apr 20, 2010
  2. Junio C HamanoApr 21, 2010
  3. Bo YangApr 21, 2010
  4. Bo YangApr 21, 2010
  5. Junio C HamanoApr 21, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.