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

Re: Not understanding with git wants to copy one file to another

From
Stefan Beller <sbeller@google.com>
Date
Aug 10, 2017, 18:47 UTC
Message-ID
<CAGZ79kZN1-DuiaS=bFgNUXBonAR3BHqtAFSqoJ+MJ4esMdmz-g@mail.gmail.com>
In-Reply-To
<87efsj70d7.fsf@local.lan>
On Thu, Aug 10, 2017 at 11:18 AM, Harry Putnam <reader@newsguy.com> wrote:
Show 38 quoted lines
> Stefan Beller <sbeller@google.com> writes:
>
>> On Thu, Aug 10, 2017 at 10:03 AM, Harry Putnam <reader@newsguy.com> wrote:
>
> [...]
>
> Harry wrote:
>>> Here are two that are at least kind of similar but would never be seen
>>> as the same:
>>>
>>> < 192.168.1.43      m2.local.lan       m2       # 00-90-F5-A1-F9-E5
>>>> 192.168.1.43    m2.local.lan        m2         # win 7
>
>  Stefan B replied:
>> The diff machinery has a threshold for when it assumes
>> a copy/move of a file. (e.g. "A file is assumed copied when
>> at least 55% of lines are equal")
>>
>> https://git-scm.com/docs/git-diff
>>
>> See -C and -M option.
>>
>> git-status seems to use this machinery as well, but does
>> not expose the options?
>
> Well, now I'm even more confused.  What actually happens? Is either
> file changed? Is only one file kept?
>
> On the surface it sounds like complete anathema to what git is all
> about.
>
> However, I know a tool this sophisticated is not doing something just
> outright stupid... so must be really missing the point here.
>
> I get the way you can make -M stricter or not... but I didn't call
> git-diff to see that copy thing comeup.
>
> I called git commit.

Ah. Sorry for confusing even more. By pointing out the options for git-diff, I just wanted to point out that such a mechanism ("rename/copy detection") exists.

The output of git-status is similar to a dry run of git-commit, and apparently this detection is used there.

>
> There must be some way to set stricter guidlines to calling things
> copies.

Well from Gits perspective it is really hard to tell if it was a copy, or if it was similar incidentally (because the format/content of these files happen to follow some strict guidelines).

The user could have moved/copied a file outside of Git (instead of git-mv, you'd use tools provided by your operating system to copy a file). Or the user could have written a file that is similar by chance.

However that doesn't really matter, as Git tracks the content, and not how the file evolved.

Consider the copy/move/rename detection as a heuristic, that wants to help the user, but may be mistaken.

Show 6 quoted lines
>
> But then I must really not get it because it still seems almost silly
> to consider one file a copy of another if only 55% is the same.
>
> What am I missing?
>
https://www.reddit.com/r/git/comments/3ogkk1/beginner_disable_rename_detection/
"Rename detection is just GUI sugar".
Previous: Harry PutnamNext: Harry Putnam
Message 4 of 7 in “Not understanding with git wants to copy one file to another”
  1. Harry PutnamAug 10, 2017
  2. Stefan BellerAug 10, 2017
  3. Harry PutnamAug 10, 2017
  4. Stefan BellerAug 10, 2017
  5. Harry PutnamAug 11, 2017
  6. Stefan BellerAug 14, 2017
  7. Junio C HamanoAug 14, 2017

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.