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".