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

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

From
Bo Yang <struggleyb.nku@gmail.com>
Date
Apr 22, 2010, 02:27 UTC
Message-ID
<m2p41f08ee11004211927w88506198sfd740da672b5c6f7@mail.gmail.com>
In-Reply-To
<7v8w8gbv75.fsf@alter.siamese.dyndns.org>
On Thu, Apr 22, 2010 at 12:56 AM, Junio C Hamano <gitster@pobox.com> wrote:
> What does the command do when given a single -C instead of --f-c-h, with
> or without your patch?  What should it do?

I have found that two days ago, all '-M/-C/-C -C' with some <path> specified will fail. byang@byang-laptop:~/git/git$ git diff --name-status -M maint master builtin/add.c A builtin/add.c

byang@byang-laptop:~/git/git$ git log -M -C -C --name-status --pretty=oneline t/t4013/diff.show_--first-parent_master 2bf6587349e31b582dae47954b1a334052230e28 show --first-parent/-m: do not default to --cc A t/t4013/diff.show_--first-parent_master

without <path>
byang@byang-laptop:~/git/git$ git diff --name-status -M  maint master
| grep  'builtin/add.c'
R100	builtin-add.c	builtin/add.c

byang@byang-laptop:~/git/git$ git log -M -C -C --name-status --pretty=oneline | grep -- 't/t4013/diff.show_--first-parent_master' C050 t/t4013/diff.show_master t/t4013/diff.show_--first-parent_master

Both of above files are copied/renamed.
This because in diff_tree,
              if (opt->nr_paths) {
                        skip_uninteresting(t1, base, baselen, opt);
                        skip_uninteresting(t2, base, baselen, opt);
                }

And this give no chance for later rename/copy detection. I have been trying to figure out a patch for this, but the logic is complex and it will take more time...

Show 15 quoted lines
> Because try_to_follow_renames() is supposed to be a rare-event (it only
> happens when a path we have been following disappears), I am having this
> feeling that it would make more sense to do this change unconditionally.
>
> Two possible outcomes that this patch allows the users to have by giving
> them a choice to give (or not to give) --f-c-h are:
>
>  (1) the path is judged to be new in a commit and traversal finishes
>     there; or
>
>  (2) the path is found to be a copy from another path from one of the
>     parents and traversal continues.
>
> But I think using --follow is a sure sign of the user wanting the latter
> and never the former, no?
Hmm, that makes sense. So, --follow always means --f-c-h.

Regards! Bo

Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 4 in “Make git log --follow support --find-copies-harder.”
  1. Make git log --follow support --find-copies-harder.Bo Yang, Apr 21, 2010
  2. Junio C HamanoApr 21, 2010
  3. Bo YangApr 22, 2010
  4. Junio C HamanoApr 22, 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.